Это довольно долгий путь, но как лучше всего получить ssh, если не удается установить соединение, выполните команду, а затем повторите попытку подключения.

Чтобы поделиться своим примером использования, я использую ssh-туннель через ssh-туннель для доступа к компьютеру за брандмауэром, что означает в моей ~/.ssh/config следующее:

Host tunnel
    HostName 192.168.1.27

Host target
    HostName localhost
    Port 2003

и чтобы ssh target работал, мне сначала нужно иметь ssh -N -L 2003:localhost:22 tunnel , выполняемый в фоновом режиме. Я решил сделать это с помощью одной команды: screen -d -m ssh -N -L 2003:localhost:22 tunnel .

Не слишком раздражает запуск этой команды в случае сбоя ssh target , но было бы неплохо, если бы ssh мог каким-то образом автоматически запускать ее при сбое соединения.

1 ответ1

0

Гораздо лучшим решением, чем туннелирование, является использование ProxyCommand, как описано здесь: Пересылка трафика SSH через промежуточный компьютер

Чтобы соответствовать вашему варианту использования:

Host tunnel
  HostName 192.168.1.27
Host target
  HostName localhost
  Port 2003
  ProxyCommand ssh tunnel -W %h:%p

или же

  ProxyCommand ssh tunnel nc %h %p

Тогда выполнение только ssh target сделает все за вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .