답변:
ssh -o 'ProxyCommand ssh -W %h:%p user@192.168.123.101'
그런 다음 간단하게 실행할 수 있습니다 ssh PC1.
에있는 별칭을 통해 가장 잘 사용됩니다 ~/.ssh/config:
Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh -W %h:%p user@192.168.123.101
-W옵션 이없는 구 버전의 OpenSSH (이것은 ≤5.4라고 생각합니다)에서 netcat 이 PC2에서 사용 가능한지 확인 하고 사용하십시오
Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh user@192.168.123.101 nc %h %p
SSH를 사용하면 명확한 해결책이 있습니다.
로컬 컴퓨터 ~/.ssh/config에서 다음을 갖도록 설정하십시오 .
host WhatYouWillCallTheConnection
hostname the.gateway.server.address.com
user YourUsernameOnTheGateway
연결하려는 게이트웨이와 최종 서버 모두에서 로컬 클라이언트의 공개 키가 ~/.ssh/authorized_keys
게이트웨이 시스템 ~/.ssh/authorized_keys에서 클라이언트의 공개 키를 지정하는 행의 시작 부분에서 다음과 같이 강제 명령을 추가하도록 변경해야합니다.
command="ssh -A user_name@ServerTheGatewaySees.ButTheClientCant.net" ...yourPublicKey....
는 -A당신이 암호를 모든 시간을 보내지 같이 할 경우 에이전트를 전달하는 것입니다 ...
이렇게하면 언제든지 ssh WhatYouWillCallTheConnection게이트웨이를 통해 바로 실행되고 다른 쪽의 서버에 투명하게 연결됩니다.
ssh -A게이트웨이 시스템의 관리자를 신뢰 하지 않으면 사용하지 마십시오 . 개인 키는 얻을 수 없지만로 게이트웨이에 연결되어 있으면 ssh -A전달 된 에이전트를 사용하여 다른 컴퓨터에 연결할 수 있습니다.
포트 포워딩이 유용 할 수 있습니다.
PC1에서 :
~# ssh -fN -L 22:PC3:7777 -l <user> PC2
7777은 모든 포트 일 수 있습니다 (아직 사용하지 않는 경우). 나는 그 숫자와 +1 (7778, 7779 등)로 관리 할 수있는 "주문"을 좋아한다.
이 작업이 완료되면 PC1의 로컬 포트 7777에서 PC3의 포트 22로 '투명한'터널이 생깁니다.
~# ssh -l <user> -p 7777 localhost
그리고 당신은 PC3에 있어야합니다.
SOCKS 프록시를 설정하려는 경우 -D를 사용하여 포트를 동적으로 전달할 수도 있습니다.
~# ssh -D <someport> -fN -L 22:PC3:7777 -l <user> PC2
건배!
이것에 대한 2017+ ( ssh v7.3 부터 )는 ProxyJump입니다 .
ssh -J user@jumphost user@destination
의 약자 :
ssh -o "ProxyJump user@jumphost" user@destination
다음 ssh dest과 같이 ~/.ssh/config스 니펫 을 사용하여 단축 할 수 있습니다 .
Host jump
User MyJumpHostUser
Hostname Jump.host.tld
Host dest
ProxyJump jump
User MyDestUser
Hostname des.tin.ati.on
내가 아는 유일한 해결책은 Belier 를 사용한 ssh 스크립팅입니다 .
Belier를 사용하면 SSH 연결을 통해 셸을 열거 나 원격 컴퓨터에서 명령을 실행할 수 있습니다. Belier의 주요 기능은 작업을 실현하기 전에 여러 중간 컴퓨터를 교차 할 수 있다는 것입니다.
얼마 전 MIT Lincoln Laboratory 홈페이지 에서이 README.sshhop 을 찾았 지만 이에 대한 추가 정보를 찾을 수 없었습니다. 누군가 더 알고 있습니까?