ssh ProxyCommand не работает как обычная команда
Я пытаюсь выполнить ssh с компьютера-A на компьютер-C путем туннелирования через компьютер-B с ключом на компьютере-B. Я уже поделился ключами от компьютера-A к компьютеру-B и от компьютера-B к компьютеру-C
Это работает на компьютере A для подключения к компьютеру C без пароля и вмешательства:
ssh -t computerB ssh computerC
Если я добавлю эту же команду в свой ssh_config на компьютере, она просто зависнет
Host = computerC
ProxyCommand = ssh -t computerB ssh computerC
я получаю следующую ошибку:псевдо-терминал не будет выделен, потому что стандартный ввод не является терминалом.
1 ответ
Попробуй это:
Host computerC
ProxyCommand ssh computerB nc %h %p
Возможно, вам придется изменить nc
(netcat), если оно имеет другое имя или отсутствует в PATH по умолчанию на компьютере B.
Объяснение:
ssh -t computerB ssh computerC
регистрирует вас на компьютере B через ssh, а затем с компьютера B регистрирует вас на компьютере C через ssh. Для каждого перехода --- от A до B, а затем от B до C - ssh устанавливает TCP-соединение с портом 22, по которому передаются зашифрованные данные.
ProxyCommand отключает открытие TCP-соединения и вместо этого указывает пользовательскую команду для открытия соединения. На другой стороне соединения должен быть демон ssh с другой стороны, с которым может общаться ssh-клиент - оболочка ему вообще не нужна.