Я пытаюсь поместить мою многопользовательскую команду ssh в файл ssh .ssh / config.
Это мой график подключения: ноутбук (я здесь) ------> userver -------> рабочая станция
Я поместил открытые ключи SSH RSH в «userver» и «workstation». На данный момент я могу подключиться, набрав эту строку:
ssh -A -t userserver@userver ssh -A userworkstation@workstation
Однако я хотел бы использовать возможности файла конфигурации в ~ / .ssh / config для достижения того же эффекта, но с помощью одной простой команды, которая также позволила бы мне выполнять быстрое копирование с помощью 'scp'. Единственная проблема заключается в том, что userver не имеет команды nc, и у меня нет суперпользователя, только управление моей домашней папкой. Тем не менее, я попробовал кое-что:
У меня есть этот файл конфигурации на моем ноутбуке (~ / .ssh / config):
# laptop config file
Host userver
Hostname userver_hostname
port 22
User server_user
Также другой файл конфигурации в userver (~ / .ssh / config)
# userver config file
Host workstation
Hostname workstation_hostname
port 22
user workstation_username
С помощью этих файлов конфигурации я могу подключиться как
ssh -A -t userver ssh -A workstation
что является улучшением, но не достаточно. Я попытался добавить еще один хост в моей конфигурации ноутбуков, например так:
Host hop
ProxyCommand ssh -A -t userver ssh -A workstation
Потом, когда я
ssh hop
я получаю следующий вывод с ошибками и не могу подключиться:
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
-bash: line 1: $'SSH-2.0-OpenSSH_6.4\r': command not found
Любые идеи?
источник
Я обнаружил, что следующее решение работает намного лучше, чем использование netcat (
nc
), как в другом примере. С netcat мое соединение было очень медленным и постоянно зависало, пока я не нажал несколько клавиш. Также вам не нужно устанавливать Netcat.Добавьте следующее к вашему
~/.ssh/config
:Тогда вы можете ssh, как это:
Также обратите внимание, что причина, по которой вы
ProxyCommand
не работаете, заключается в том, что вы не получаете то, чтоProxyCommand
делает.ProxyCommand
необходимо создать канал, по которомуssh
можно установить SSL-соединение. Другими словами, команда должна запустить процесс, чьи stdin и stdout подключаютсяssh
кsshd
порту. В вашей конфигурации вы создаете ssh-соединение,ProxyCommand
которое подключаетсяssh
к командной оболочке, а не кsshd
порту.источник