Прозрачное подключение по ssh через существующее ssh соединение

Исходные данные

Есть машина cain, которая доступна по ssh из внешний сети, и avel, которая доступна только из внутренней сети (для cain).

В этом случае использование аутентификации с открытыми ключами невозможно без переноса секретного ключа на машину cain.

Решение

Добавить в ~/.ssh/config следующие строки:

Host avel.cain
  User root
  HostName 203.0.113.59
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/avel
  ProxyCommand ssh cain nc %h %p 2> /dev/null

где подключение к cain описывается обычным способом:

Host cain
  User root
  HostName 91.144.177.135
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/cain

после чего можно к avel подключаться также, как и к cain:

mikhail@lens ~ $ ssh avel.cain
root@avel:~#