여러 홉을 통해 SSH 명령을 연결하는 방법은 무엇입니까?

여러 홉을 통해 SSH 명령을 연결하는 방법은 무엇입니까?

SSH 호스트로 지정된 각 연결과 함께 여러 SSH 연결을 연결할 수 있습니까?

플래그를 사용 -W하거나 nc다른 호스트 이름이나 IP 주소로 두 번째 홉을 수행하는 것이 가능하다는 것을 알고 있습니다(예:여러 호스트를 통한 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수행할 수 있도록 하는 것입니다. 대상에 대한 신원 파일 및 IP 조회를 통해 ssh hopped_destination중간 처리를 수행합니다 . ~/.ssh/config내가 이것을 원하는 이유 중 하나는 궁극적으로 를 사용하여 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뿐이었습니다)

관련 정보