SSH LocalForward - 호스트 점프

SSH LocalForward - 호스트 점프

저는 현재 일상적인 작업을 더 쉽게 만들기 위해 Linux 시스템을 설정하고 있습니다. 터미널을 사용하여 호스트로 이동할 수 있도록 SSH를 구성하고 싶습니다. LocalForward 및 ProxyJump에 대해 읽었습니다. 목표는 첫 번째 서버에 연결하고 이를 통해 연결을 터널링한 다음 두 번째 서버에 연결하는 것입니다(두 번째 서버는 첫 번째 서버에서만 연결할 수 있는 영역에 있기 때문입니다).

이제 내가 한 일은 ~/.ssh/config 파일의 다음 조각입니다.

Host tunnel
    HostName <firstServer>
    IdentityFile ~/.ssh/example.key
    LocalForward 9906 <secondServer>:22
    User helloWorld

이제 "ssh 터널"을 사용하여 서버에 연결하면 첫 번째 서버에 성공적으로 연결할 수 있습니다. 이제 텔넷을 사용하여 "telnet SecondaryServer 9906"을 사용하여 두 번째 서버를 확인하면 해당 서버에서 SSH가 실행되는 것을 볼 수 있습니다. 이제 "ssh localhost:9906"을 사용하여 두 번째 서버에 SSH를 시도하면 호스트 이름이 확인되지 않음 메시지가 표시됩니다(127.0.0.1:9906과 동일).

나중에 "ProxyJump" 옵션에 대해 읽고 다음을 시도했습니다.

Host tunnel
    HostName <firstServer>
    ProxyJump <secondServer>:22
    User helloWorld

그러나 연결이 설정되지 않습니다. "연결 대상"에서 멈췄습니다.

여기서 분명한 것을 놓치고 있습니까? 어쩌면 제가 SSH 전달의 기본 개념 전체를 오해한 것은 아닐까요? 나는 Putty를 사용하는 데 익숙했지만 최근에는 Linux로 전환하여 모든 것을 적절하게 설정하고 싶었습니다.

답변1

이 ~/.ssh/config는 ProxyJump를 전달합니다.도약도착하다표적, 포트를 끝까지 바인딩합니다.표적:

Host jump
  HostName      <server-ip>
  User          user-name
  IdentityFile  ~/.ssh/key.pem
  LocalForward  8888 localhost:8888
Host target
  HostName      <server-ip>
  User          user-name
  IdentityFile  ~/.ssh/key.pem
  ProxyJump     jump
  LocalForward  8888 localhost:8888

용법:

  • SSH 대상
  • ssh -v target # 자세한 디버깅 보기
  • 답변2

    우리 팀에서는 다음과 같은 원라이너를 사용합니다.

    $ ssh zone_user@zone_host -o ProxyCommand="ssh -W %h:%p proxy_user@proxy_host"
    

    노트:

    1. 둘 다 존재 proxy_user@proxy_host하고 zone_user@zone_host개인 키가 에 있는지 확인하세요 ~/.ssh/authorized_keys.
    2. SSH를 통해 SSH를 전달하기 위해 추가 포트를 할당하고 "터널"할 필요가 없습니다.
    3. 나는 그것을 너무 많이 다루는 것을 권장하지 않습니다 ~/.ssh/config. 오류가 발생하기 쉽고 문서가 사용자 친화적이지 않습니다. 위와 같은 단일 라이너를 공유하는 것이 좋습니다.

    건배!

    관련 정보