저는 현재 일상적인 작업을 더 쉽게 만들기 위해 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
용법:
답변2
우리 팀에서는 다음과 같은 원라이너를 사용합니다.
$ ssh zone_user@zone_host -o ProxyCommand="ssh -W %h:%p proxy_user@proxy_host"
노트:
- 둘 다 존재
proxy_user@proxy_host
하고zone_user@zone_host
개인 키가 에 있는지 확인하세요~/.ssh/authorized_keys
. - SSH를 통해 SSH를 전달하기 위해 추가 포트를 할당하고 "터널"할 필요가 없습니다.
- 나는 그것을 너무 많이 다루는 것을 권장하지 않습니다
~/.ssh/config
. 오류가 발생하기 쉽고 문서가 사용자 친화적이지 않습니다. 위와 같은 단일 라이너를 공유하는 것이 좋습니다.
건배!