구성 파일에 대한 SSH Proxyjump 명령

구성 파일에 대한 SSH Proxyjump 명령

Proxyjump를 통해 중간 노드를 사용하여 원격 노드에 로그인하기 위해 ssh 명령을 사용합니다. 원격 및 중간 노드는 Linux 서버이고 내 클라이언트는 Macbook입니다. 이 명령은 작동하며 다음과 같습니다.

ssh -i .ssh/id_file -J user1@jump_node -A -D remote_port user2@remote_node

여기서 jump_node 및 remote_node를 중간 및 원격 노드의 호스트 이름으로 바꾸고, remote_port를 remote_node의 sshd 포트로 바꿉니다.

내 첫 번째이자 주요 질문은 이 명령을 구성 섹션으로 만드는 방법입니다..ssh/config 파일에 넣을 수 있나요? SSH 매뉴얼 페이지를 보았지만 및 -D플래그 에 해당하는 구성 옵션을 얻을 수 없었습니다 -A(아마도 ForwardAgent yes? -A). 누군가 이러한 플래그와 이 명령에서 올바른 구성 섹션을 만드는 방법을 설명해 주시겠습니까?


내 다른 질문은 덜 중요하지만 여기서 무슨 일이 일어나고 있는지 이해하는 데 도움이 될 것입니다.이 두 번째 질문은 약간 다른 명령을 실행할 때 발생하는 오류에 관한 것입니다.

온라인에서 읽은 대부분의 문서에서는 다음과 같은 명령을 사용하도록 제안합니다.

ssh -i .ssh/id_file -J user1@jump_node user2@remote_node:remote_port

하지만 이 명령을 시도하면(플래그 유무에 관계없이 -A) 다음 오류가 발생합니다.

channel 0: open failed: connect failed: Name or service not known
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535

이 오류가 무엇을 의미하는지, 사용할 수 있는 힌트가 있는지 알 수 없습니다.

답변1

보다man 5 ssh_config:

ForwardAgent yes
IdentityFile .ssh/id_file

Host jump_node
    User user1

Host remote_node
   ProxyJump jump_node
   User user2

그냥 실행하세요 ssh remote_node.

ProxyJump너무 에 대해 (다른)도 지정하면 이 방법으로 체인을 구축할 수도 있습니다 jump_node.


두 번째 문제는 ssh user2@remote_node:remote_port잘못된 구문입니다. 오류 메시지에는 예상한 것과는 달리 호스트 이름(예, 콜론이 포함되어 있음)으로 Name or service not known확인하려고 시도했지만 실패했기 때문에 라고 표시됩니다. 없이 동일한 작업을 실행해 보면 오류 메시지가 약간 더 명확해집니다.remote_node:remote_portremote_node-J

나는 이것을 SSH 서버가 원격 노드에서 수신 대기하는 포트를 지정하려는 시도로 해석합니다. 이를 위해서는 구성 파일의 -p명령줄 매개변수나 호스트 항목 옵션을 사용하세요.Port

-D또한 이는 명령줄 스위치 와 공통점이 없습니다 . 그리고 그 주장은 "원격 포트"가 아닙니다. 오히려 해당 스위치는 완전히 다른 작업을 수행합니다. 즉, SSH 클라이언트가듣다지정된 포트에서로컬 머신에서SOCKS 연결을 수락하면 원격 장치가 종료 노드로 사용됩니다. 예를 들어 로컬 브라우저에서 이를 구성하면 SSH 터널을 통해 인터넷에 액세스하고 제3자(웹 서버)는 원격 호스트의 IP에서 오는 연결을 볼 수 있습니다. SSH 서버를 제외하고는 누구도 귀하의 "실제" IP를 볼 수 없습니다(이 경우 점프 서버의 주소는 볼 수 있습니다). 설정이것구성에서는 DynamicForward구성 파일의 옵션을 사용합니다.

관련 정보