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뿐이었습니다)