SSH 호스트로 지정된 각 연결과 함께 여러 SSH 연결을 연결할 수 있습니까?
-W
해당 플래그를 사용하거나 다른 호스트 이름이나 IP 주소로 두 번째 홉을 수행하는 것이 가능하다는 것을 알고 있습니다 nc
(예를 들어,여러 호스트를 통한 SSH). 몇 가지 이유로 인해 원하는 대로 작동할 수 없습니다. 첫째, 두 번째 홉에는 중간 호스트에 저장된 키 파일을 사용하고 싶은데, 또는 를 사용하여 지정하는 -W
방법을 찾지 못합니다 nc
. 둘째, 최종 목적지는 가변 IP 주소를 갖는다. 이 문제를 해결하기 위해 중간 호스트에 저장된 파일에 IP 주소를 쓰는 스크립트를 대상에서 실행한 다음 look_up_ip.sh
IP 주소를 인쇄하는 중간 호스트( )에서 스크립트를 실행합니다. 중간 호스트에는 다음 항목이 있습니다 ~/.ssh/config
.
Host destination
HostName destination
User dest_user
IdentityFile ~/.ssh/destination
PreferredAuthentications publickey
ProxyCommand nc $(look_up_ip.sh %h) %p
이를 통해 중간에서 대상으로 연결할 수 있습니다 ssh destination
.
내가 하고 싶은 것은 ~/.ssh/config
대상 호스트(예: hopped_destination
)를 정의하는 첫 번째 머신에 무언가를 넣어 ssh가 먼저 중간 호스트에 연결한 다음 거기에서 작업을 수행 ssh destination
하도록 하는 것입니다 . ssh hopped_destination
중간 ~/.ssh/config
처리 ID 파일 및 대상 IP 조회가 있습니다. 내가 이것을 원하는 이유 중 하나는 궁극적으로 VNC를 사용하여 대상에 연결할 수 있기를 원 vncviewer -via destination localhost:0
하고 이 질문에 대한 중간 호스트의 다른 사용자가 해당 연결에 액세스할 수 없도록 하기 위함입니다(허용된 답변의 일부에서 알 수 있음). :https://superuser.com/questions/96489/an-ssh-tunnel-via-multiple-hops). 첫 번째 컴퓨터에 다음 ssh
과 같은 것을 설치할 수 있기를 원합니다 ProxyCommand
.
Host destination
ProxyCommand ssh -t intermediate_user@intermediate_host ssh destination
그러나 나는 그런 일이 작동하도록 허용하는 옵션을 찾지 못했습니다.
또한 이 작업을 더 잘 수행하는 방법에 대한 제안도 환영합니다( nc
ProxyCommand
지금 사용하고 있는 것을 제거할 수 있는 방법이 있습니까?). VNC 명령을 더 직접적으로 수행하는 스크립트를 작성할 수도 있지만 이는 아마도 더 복잡할 것입니다(포트 전달을 직접 처리하고 종료 시 닫혀 있는지 확인하고 포트가 모든 사용자에게 열려 있지 않은지 확인).
답변1
내 SSH 구성 파일의 예;
Host vmike2-squid-cache
User mike
ProxyCommand ssh -q -A -x ???.???.???.??? -W %h:22
(내가 바꾼 유일한 것은 IP뿐이었습니다)