Я размышлял над идеей создания прокси-сервера 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
Пример выше сделает его рекурсивным, каждое соединение будет использовать команду proxy, которая снова является ssh с другой командой proxy. Хороший способ DOS вашего proxy.
Вам следует исключить прокси из списка, использовать -F /dev/null
для игнорирования конфигурации команды proxy или просто игнорировать команду proxy для proxy ssh:
ProxyCommand ssh -oProxyCommand=none my_user@proxy_ssh.example.com netcat -w 120 %h %p
решение2
Добавьте запись в конфигурацию для хоста перехода, которая переопределяет команду proxy:
Host proxy_ssh.example.com
ProxyCommand none
В противном случае он попытается использовать команду proxy, чтобы добраться до самого хоста перехода.