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-клиент - оболочка ему вообще не нужна.

Другие вопросы по тегам