답변:
(이상한 상황, 삼각형 라우팅 과 같은 것이 인터넷 라우팅에 적용되지 않습니까?)
어쨌든,에, 다음을 시도 , 로 B 로모그래퍼 인수ssh
-D
ssh -D 1080 address-of-B
SOCKS5 프록시로 작동 127.0.0.1:1080
하는 SOCKS5 프록시 연결을 지원하는 모든 제품에서 사용할 수 있습니다. 분명히wget
환경 변수를 사용 하여이 작업을 수행 할 수 있습니다
export SOCKS_SERVER=127.0.0.1:1080
wget http://server-C/whatever
때때로 curl
더 편리 하다는 점에 유의하십시오 (즉 wget
, SOCKS5를 통해 호스트 이름 조회를 수행 할 수 있는지 잘 모르겠습니다 . 또한 Firefox는 이러한 SOCKS5 프록시를 통해 완벽하게 작동 할 수 있습니다.
편집 이제 방금 한 줄 솔루션을 찾고 있음을 알았습니다 . 글쎄, 어때?
ssh address-of-B 'wget -O - http://server-C/whatever' >> whatever
즉, wget
-fetched 출력을 stdout
로 리디렉션하고 로컬 출력 ( 원격 ssh
실행 에서 wget
)을 파일로 리디렉션 합니다.
이것은 작동하는 것처럼 보이며 wget
출력은 약간 혼란 스럽습니다 ( " Save to- ") . 호출 에 추가 -q
하여 제거 할 수 있습니다 wget
.
wget
에 대한 지원이없는 SOCKS_SERVER
변수. 그 대답은 curl --socks5-hostname
또는 사용을 제안 curl --socks5
합니다.
socksify
대신 있을 수 있습니다 .
socksify
설정이 아니라 별도의 프로그램입니다.
SOCKS_SERVER
영향을 미치 려면 ports.su/security/dantewget
를 설치 한 다음 그냥 대신 실행해야 합니다.socksify wget
wget
다른 질문에 대한 또 다른 대답에서 영감을 얻은 proxyproxys-ng (새로운 버전의 proxychains )를 사용하는 것이 좋습니다 .
proxychains.conf
현재 디렉토리, 또는 파일 ~/.proxychains/proxychains.conf
, 또는를 /etc/proxychains.conf
.
-f
명령 행 인수 또는 PROXYCHAINS_CONF_FILE
환경 변수 를 통해 지정 하십시오.당신에 proxychains.conf
파일 추가 :
[ProxyList]
socks5 127.0.0.1 1234
를 실행하십시오 ssh -D 1234 your_host_b
. 이것은 ssh가 localhost의 포트 1234에서 청취하고 원격 호스트를 SOCKS 프록시로 사용하게합니다.
ssh -ND 1234 your_host_b
대신 실행하십시오 . -N
ssh가 원격 서버에서 명령을 실행하지 못하게합니다 (즉, 쉘을 열지 않습니다).proxychains4 yourcommandhere yourparametershere
. 몇 가지 예를 참조하십시오.
proxychains4 wget -O - http://ifconfig.co/
proxychains4 -q links http://ifconfig.co/
에서 wget
SOCKS5 프록시 와 함께 사용하려면 옵션을 유틸리티 와 함께 사용하려면 패키지 ssh
를 설치해야 합니다.security/dante
SOCKS_SERVER
socksify
sudo pkg_add dante
후속 적으로 백그라운드에서 SSH 연결을 엽니 다.
ssh -N -C -D1080 user@hostB &
그리고 socksify를 통해 SOCKS5 프록시를 통해 wget을 사용하십시오.
env SOCKS_SERVER=127.0.0.1:1080 socksify wget http://website-C
파일을 stdout
서버에 파이프하고 stdin
워크 스테이션 에서 파일을 읽으십시오 .
ssh -C user@hostB "wget -O- http://website-C" >> file-from-website-C
컴퓨터 B에 터널을 만들어야합니다. 그 호출을 웹 사이트 C로 리디렉션합니다. 그러나 ISP가 일부 제한 사항이 아닌 한 이것이 더 빠른 이유에 대해 의아해합니다.
나는 oneliner를 모른다. 그러나 이것은 훨씬 더 복잡하지 않다.
기계 A에서, 당신은 (11111을 무작위로 가져갔습니다.> 1024 이상이라면 원하는 것을 취할 수 있습니다. 그렇지 않으면 루트가되어야합니다)
ssh -f -C -N -L 11111:C:80 username@B
B의 사용자 이름은 B에 연결하는 데 사용하는 사용자 이름입니다. 이렇게하면 컴퓨터 B의 포트 11111에 터널을 생성하여 컴퓨터 C의 포트 80 (HTTPS의 HTTP 사용 443에서 웹 사이트 사용)으로 리디렉션합니다. 순서 ;) )
그런 다음 컴퓨터 B를 통해 컴퓨터 A에서 직접 파일을 다운로드 할 수 있습니다. 파일이 있다고 가정하고 http://C/path/to/file
다음을 사용합니다.
wget http://B:11111/path/to/file
포트 전달 (ssh tunneling)을 통해이를 수행 할 수 있습니다. 리소스는 다음과 같습니다. http://www.jfranken.de/homepages/johannes/vortraege/ssh2_inhalt.en.html#ToC9
기본적으로 B에서 포트 전달을 설정해야합니다. A 문제가 B로 전달되면 B는 패킷을 C로 전달하고 결과를 A로 다시 보냅니다.
SOCKS_SERVER
환경 변수는 Ubuntu 14.04에 영향을 미치지 않습니다.