Конфигурация PuTTY эквивалентна OpenSSH ProxyCommand
Я просто пытаюсь использовать PuTTY, чтобы получить SSH-соединение с моими серверами. Эти серверы разрешают входящее SSH-соединение только с другого определенного сервера ("MySshProxyingServer" в примере ниже).
При использовании Linux это не проблема с ssh -W
команда.
В PuTTY я не могу найти варианты создания такой связи.
Пример под Linux (~/.ssh/config
):
Host MyHostToConnectTo
Hostname xx.xx.xx.xx
User root
Identityfile ~/.ssh/id_rsa
ProxyCommand ssh MySshProxyServer -W %h:%p
Кто-нибудь знает, как использовать такой конфиг в PuTTY?
4 ответа
Эквивалентом в PuTTY является "команда локального прокси". Вы можете использовать plink.exe
с -nc
переключаться вместо ssh
с -W
переключатель:
Альтернатива - сначала открыть туннель через MySshProxyServer, используя другой экземпляр PuTTY (или Plink).
Смотрите, например:
- Как создать SSH-туннель с помощью PuTTY в Windows?
- Мое руководство по туннелированию сессии SFTP / SCP. Это для WinSCP, но просто используйте PuTTY вместо WinSCP в разделе Подключение через туннель.
На тот случай, если вы все еще используете пароль для своего jumphost, это вариант с примером.
plink.exe %user@%proxyhost -pw %pass -P %proxyport -nc %host:%port
Предположим, мы хотим, чтобы ssh172.16.0.21
с помощью8.8.8.8
логин на обоих хостахjohn
путь к закрытому ключуC:\users\john\.ssh\private.ppk
.
plink.exe -v -ssh %user@%proxyhost -P %proxyport -nc %host:%port -i "c:\Users\john\.ssh\private.ppk"
PS
Если ваш закрытый ключ защищен паролем, вы должны дополнительно запустить конкурс и загрузить туда свой закрытый ключ.
PS
если вы хотите использовать командную строку только тогда:
putty.exe -proxycmd "plink.exe john@8.8.8.8 -P 22 -nc 172.16.0.21:22 -i c:\Users\john\.ssh\private.ppk " john@172.16.0.21 -i c:\Users\john\.ssh\private.ppk
Когда вы хотите запустить putty.exe из командной строки, это работает следующим образом:
putty.exe -proxycmd "plink.exe user@jumphost -P 22 -nc targethost:targetport" user@foo
Согласно документам, он использует stdin/stoutproxycmd, поэтому «foo» здесь подходит как целевое имя хоста.