SSH1 서버를 통해 터널링하는 데 문제가 있습니다. 이는 고객의 컴퓨터에 있으며 아니요, SSH2로 업데이트되지 않습니다.
약간의 배경 지식: 고객의 게이트웨이를 통해 성공적으로 터널링할 수 있습니다.
localhost -> gateway.customer.example.com -> srv.customer.internal
이 구성을 사용하여
Host gateway
Hostname gateway.customer.example.com
IdentityFile ~/.ssh/mykey
...
Host srv-tunnel
ProxyCommand ssh gateway -W srv.customer.internal:22
IdentityFile ~/.ssh/mykey
...
그리고 나서 간단히
$ ssh srv-tunnel
훌륭하게 작동하고 keyfile을 사용하여 자동으로 터널을 설정합니다 ~/.ssh/mykey
.
이 다중 홉 터널에 대해 유사한 구성을 사용하려고 했습니다.
localhost -> gateway.customer.example.com
|
v
onemoregateway.customer.internal -> srv2.customer.internal
하지만 이번에는onemoregateway
SSH 1을 실행 중이고 nc
사용할 수 없습니다.. ssh를 사용할 수 있으며 위와 같이 전달 연결을 설정하려고 하면 ssh가 오류와 함께 종료된다는 onemoregateway
메시지가 표시됩니다 .The only permitted commands are ssh and scp.
stdio forwarding require Protocol 2
그러나 개인 키는 내 로컬 컴퓨터에만 있기 때문에 onemoregateway
에서 로 직접 SSH를 통해 연결할 수 없습니다 . srv2
상황을 더욱 복잡하게 만들려면 에 하나의 키가 필요 gateway
하고 onemoregateway
및 에 또 다른 키가 필요합니다 srv2
.
그렇다면 어떻게 터널을 통과할 수 있습니까 srv2
?
내 동료들이 Windows에서 Putty+Pageant를 사용하여 수행했기 때문에 어떻게든 가능하다고 생각합니다. 하지만 저는 Linux를 사용하고 있습니다.
답변1
좋아, 방법을 찾았지만 터널링을 투명하게 만들 수 있는 방법은 없는 것 같습니다.
Host gateway
Hostname gateway.customer.example.com
IdentityFile ~/.ssh/mykey
...
Host tunnel-to-srv2
ProxyCommand ssh gateway -W onemoregateway.customer.internal
IdentityFile ~/.ssh/myotherkey
Protocol 1
LocalForward 10022 srv2.customer.internal:22
...
Host srv2
Hostname localhost
Port 10022
IdentityFile ~/.ssh/myotherkey
Protocol 1
...
그리고 이제 해야 할 일
$ ssh tunnel-to-srv2
그리고 마지막으로 별도의 터미널*에서
$ ssh srv2
* 터널링 SSH 프로세스를 백그라운드로 보내는 방법을 찾을 수 없습니다.-fNT
편집: 알고 보니 에는 onemoregateway
실제로 있고 nc
실행할 수 있지만 전체 경로를 사용해야 합니다./bin/nc
그래서 결국 나는 이 구성을 갖게 되었습니다.
Host gateway
Hostname gateway.customer.example.com
IdentityFile ~/.ssh/mykey
...
Host tunnel-to-srv2
ProxyCommand ssh gateway -W onemoregateway.customer.internal
IdentityFile ~/.ssh/myotherkey
Protocol 1
...
Host srv2
ProxyCommand ssh tunnel-to-srv2 /bin/nc srv2.customer.internal 22
IdentityFile ~/.ssh/myotherkey
Protocol 1
...
그냥 달리면 투명한 터널 호핑을 얻을 수 있습니다.
$ ssh srv2