2013-05-21 1 views
1

로컬 네트워크에서 액세스 할 수없는 호스트 A가 있습니다. 하지만 SSH와를 통해 액세스 할 수있는 호스트 B는 그래서 설치 SSH를 터널 내 ~/스푸핑/설정이직접 연결할 수없는 원격 호스트에 대한 SSH

과 같은

ssh -N -D 7070 [email protected]_B 

B를 통해 액세스 A를 시도 B. 에 볼 수있다

host HOST_A 
    ProxyCommand socat - PROXY:127.0.0.1:7070:%h:%p,proxyport=7070 

나는 다음과 같은 명령을

ssh -v [email protected]_A 

를 실행 나는 다음과 같은 오류가 발생했습니다.

debug1: identity file /Users/leo/.ssh/id_rsa type -1 
debug1: permanently_drop_suid: 501 
debug1: identity file /Users/leo/.ssh/id_rsa-cert type -1 
debug1: identity file /Users/leo/.ssh/id_dsa type 2 
debug1: identity file /Users/leo/.ssh/id_dsa-cert type -1 
2013/05/21 22:19:13 socat[4537] E proxy_connect: connection closed by proxy 
ssh_exchange_identification: Connection closed by remote host 

내 컴퓨터에는 /etc/hosts.allow 또는 /etc/hosts.deny가 없습니다. mac OS를 사용 중입니다.

+0

로컬 호스트에서 B, 그리고 B에서 A로 이동하려는 것 같습니다. 그렇다면 항상'ssh -t B ssh A'를 쓸 수 있습니다. – demure

답변

2

socat에 HTTP 프록시에 연결하도록 요청했지만 사용자가 설정 한 ssh 터널은 SOCKS 프록시입니다.

host HOST_A 
    ProxyCommand socat - SOCKS4:127.0.0.1:7070:%h:%p,proxyport=7070 

을하지만, 일반적으로는하고 싶지 않아요 (사용자가 설치 한 특정 socat에 대한 man socat을 확인 --- 다른 SOCKS 옵션을 사용할 수 있습니다.) 다음 SOCKS 프록시에 연결 socat에게 미리 ssh 터널을 설정하십시오. 일반적인 방법은 HOST_B에 netcat을 사용하는 것입니다 :

host HOST_A 
    ProxyCommand /usr/bin/ssh [email protected]_B /bin/nc %h %p 

(변경 경로 이름은 ssh를 필요로 netcat을 할 수 있습니다.)

몸매의 ssh -t HOST_B ssh HOST_A 방법도 작동하지만 ~/.ssh/config에서 구성 할 수 없습니다.

+0

예. 당신 말이 맞아요. 감사. – leoleozhu