저는 SSH 프록시 서버나 점프 호스트(Jump Host)라는 아이디어를 갖고 놀고 있었습니다."숨겨진"서버. 기본적으로 다음과 같은 설정이 있습니다. 여기서는 호스트 이름 대신 의도적으로 IP 주소를 사용합니다.
<client> ---> <proxy_ssh> ---> <192.168.0.*>
내 의도는 가능한 한 사용자에게 투명해야 한다는 것입니다. 따라서 이상적으로는 사용자가 다음 명령만 실행하면 됩니다.
# ssh [email protected]
이 작업을 수행하기 위해 다음을 만들었습니다 .ssh/config
.
Host *
ServerAliveInterval 240
Compression yes
ForwardAgent yes
ForwardX11 yes
Host 192.168.0.*
ProxyCommand ssh my_user@proxy_ssh.example.com netcat -w 120 %h %p
이것은 잘 작동합니다. 하지만 내 proxy_ssh
서버 뒤에서 작업할 네트워크가 더 많다면 다소 지루한 일이 될 것입니다 . 그래서 작동하지 않는 섹션 ProxyCommand
에 간단히 추가해 보았습니다 .Host *
나는 이것을 최종 사용자에게 더 투명하게 만들고 싶었고 특정 호스트 정의를 생략하고 ssh 구성을 다음과 같이 변경했습니다.
Host *
ServerAliveInterval 240
Compression yes
ForwardAgent yes
ForwardX11 yes
ProxyCommand ssh my_user@proxy_ssh.example.com netcat -w 120 %h %p
이로 인해 더 이상 엔드호스트에 연결할 수 없게 되었습니다. 연결 시간이 초과되었습니다!
따라서 내 질문은 내 모든 SSH 연결이 호스트를 사용하는 방식으로 이를 보다 투명하게 하는 방법이 있습니까 proxy_ssh
?
답변1
위의 예에서는 모든 연결이 프록시 명령을 사용하도록 재귀적으로 만들 것이며, 이는 다시 다른 프록시 명령과 함께 ssh입니다. 프록시를 DOS하는 좋은 방법입니다.
목록에서 프록시를 제외하거나 -F /dev/null
프록시 명령에 대한 구성을 무시하거나 프록시 SSH에 대한 프록시 명령을 무시해야 합니다.
ProxyCommand ssh -oProxyCommand=none my_user@proxy_ssh.example.com netcat -w 120 %h %p
답변2
프록시 명령을 재정의하는 점프 호스트 구성에 항목을 추가합니다.
Host proxy_ssh.example.com
ProxyCommand none
그렇지 않으면 프록시 명령을 사용하여 점프 호스트 자체에 접근하려고 시도합니다.