Я пытаюсь туннелировать к серверу через сервер-мост. До сих пор я смог заставить его работать из командной оболочки, используя следующую команду:
ssh -A -t bridge_userid@bridgemachine.com ssh -A remote_userid@remoteserver.com
Но я пытался обернуть это в свой ~/.ssh/configфайл, и у меня проблемы. Я пробовал:
Host axp
User remote_userid
HostName remoteserver.com
IdentityFile ~/.ssh/id_rsa.eric
ProxyCommand ssh -A -t bridge_userid@bridge_userid.com ssh -A remote_userid@%h
Но когда я это делаю, я получаю следующее сообщение об ошибке, remoteserver.comи я не уверен, что его вызывает:
ksh: SSH-2.0-OpenSSH_6.8 ^ M: не найдено
Я знаю, что когда я remoteserver.comвхожу, моя оболочка есть /usr/bin/ksh.
Я пытался добавить аргументы пути к командам ssh в файле конфигурации, но это не имело никакого значения.
Есть идеи, что это может быть?
ssh -A remote_userid@remoteserver.comв качестве команды для запуска на компьютере моста, config не дает вам способа предоставлять команды по умолчанию. То, что вы пытаетесь сделать worksсамо по себе, но затем ssh пытается использовать ваш ProxyCommandкак туннель и начинает запускать протокол SSH по нему, где на другом конце находится оболочка, а не sshd, прослушивающий протокол SSH.
ProxyCommandпредполагается использовать. Обычно он используется с netcat, где ssh передает через него свой вывод, а netcat действует как туннель к SSH-порту удаленного сервера . Вам нужно что-то вроде ProxyCommand,ssh -W %h:%p bridge_userid@bridgemachine.comесли вы хотите использовать эту функцию.