SSH 서버를 통해 파일을 다운로드하는 방법은 무엇입니까?

SSH 서버를 통해 파일을 다운로드하는 방법은 무엇입니까?

미국에 서버(Linux 박스 B)가 있고 집에 있는 컴퓨터(Linux 박스 A)가 있는데 웹사이트 C에서 파일을 다운로드해야 합니다.

문제는 A에서 직접 파일을 다운로드하는 것이 너무 느리기 때문에 B에 로그인한 상태에서 파일을 다운로드한 후 sftpA에서 파일을 가져와야 한다는 점입니다.

파일을 직접 다운로드하고 단 한 줄의 명령만으로 B를 프록시로 사용할 수 있는 방법이 있습니까?

답변1

(이상한 상황이 아닌데,삼각형 부등식인터넷 라우팅을 보존하시겠습니까? )

어쨌든 다음을 시도해 보세요., ssh입력하다두번째-D주장이 있는데 ,

ssh -D 1080 address-of-B

이는 인터넷에서 SOCKS5 프록시 역할을 하며 127.0.0.1:1080SOCKS5 프록시 연결을 지원하는 모든 장치에서 이를 사용할 수 있습니다. 분명히 wget이것은 할 수 있습니다, 환경 변수를 사용하여

export SOCKS_SERVER=127.0.0.1:1080
wget http://server-C/whatever

때로는 curl이것이 더 편리하다는 점에 유의하십시오(예: SOCKS5를 통해 호스트 이름 조회가 가능한지 확실하지 않지만 wget이는 귀하의 관심사 중 하나가 아닙니다). Firefox는 이러한 SOCKS5 프록시를 통해 완벽하게 작동할 수도 있습니다.

편집하다방금 당신이 찾고 있는 걸 알아차렸어요한 줄해결책. 글쎄, 어때?

ssh address-of-B 'wget -O - http://server-C/whatever' >> whatever

즉, wget가져온 출력을 로 리디렉션 stdout하고 로컬 출력(원격 ssh실행 에서 wget)을 파일로 리디렉션합니다.

이것은 작동하는 것 같습니다. wget출력은 약간 혼란스럽습니다("-에 저장-q"), 통화에 추가하여 제거할 수 있습니다 wget.

답변2

또 다른 접근 방식은 평소와 같이 로그인하여 세션을 B시작하는 것입니다 . 여기에서 모든 파일을 디렉토리에 넣을 screen수 있습니다 .wget

이 시점에서 프로그램은 원활하게 실행됩니다. 화면에서 분리하고 백그라운드에서 실행되도록 놔두기만 하면 됩니다.

다운로드가 완료되면(아마도 더 일찍) 데이터를 가져올 B수 있습니다 (제가 선호하는 방식).Arsync

답변3

에서 영감을 받다또 다른 질문에 대한 또 다른 대답, 다음을 사용하는 것이 좋습니다.프록시 체인-ng(이것은 최신 버전입니다.프록시 체인).

  1. 다운로드, 컴파일 및 선택적으로 설치프록시 체인-ng.
  2. proxychains.conf현재 디렉터리나 또는 에 ~/.proxychains/proxychains.conf파일을 만듭니다 /etc/proxychains.conf.
    • 또는 다른 위치나 다른 이름으로 파일을 만들고 -f명령줄 인수나 PROXYCHAINS_CONF_FILE환경 변수를 통해 지정합니다.
    • 하나 있다샘플 구성 파일쓸 수 있는. 가장 관련성이 높은 옵션은 끝에 있습니다.
  3. 파일 에 proxychains.conf다음을 추가하세요.

    [ProxyList]
    socks5 127.0.0.1 1234
    
  4. 달리기 ssh -D 1234 your_host_b. 이렇게 하면 ssh가 로컬 호스트의 포트 1234에서 수신 대기하고 원격 호스트를 SOCKS 프록시로 사용하게 됩니다.

    • 또는 대신 실행하세요 ssh -ND 1234 your_host_b. -Nssh가 원격 서버에서 어떤 명령도 실행하지 못하게 합니다(즉, 셸을 열지 않습니다).
  5. 달리기: proxychains4 yourcommandhere yourparametershere. 몇 가지 예를 살펴보세요:
    • proxychains4 wget -O - http://ifconfig.co/
    • proxychains4 -q links http://ifconfig.co/

답변4

Box A에서 Box B로 SSH 터널을 설정하고 이를 Box A의 라우팅 테이블에 추가하면 Box B로의 터널을 통해 웹사이트 C에 접속할 수 있습니다. Box B에서 패킷이 전달되도록 허용해야 합니다.

여기아주 좋은 단계별 튜토리얼을 볼 수 있습니다.

관련 정보