Как "прокинуть" SSH-соединение через интернет до машины в локальной сети, если можно зайти только на сервер?

Допустим у нас имеется некая машина в локальной сети (например внутренний сервер), в шелл которой мы хотим попасть через интернет. Допустим также, что через интернет можно зайти (по SSH) только на другую машину в этой же сети (например на роутер, выпускающий из локалки в интернет). Задача: сделать это максимально просто, без прокидывания портов на роутере и т.п. Естественно, задача решаема, только если доступ по SSH есть и на роутер и на целевую машину =).

  1. Настраиваем и на целевой машине и на роутере вход по SSH-ключам. Настраиваем ssh-agent, чтобы не вводить постоянно пароль к своему ключу. Кстати в Fedora "искаропки" пароль для ключа спрашивается один раз в красивом окошке.
  2. Ставим на роутер netcat (любую понравившуюся реализацию).
  3. Прописываем в ~/.ssh/config на своей машине (с которой подключаемся) что-то типа этого:
    1. # Роутер, доступный через интернет.
    2. # Если для подключения используются настройки по умолчанию - ничего прописывать не нужно.
    3. Host external-server.example.org
    4. Port 12345
    5. User superadmin
    6.  
    7. # Целевая машина.
    8. # В качестве имени можно указать что угодно - оно не будет использоваться для определения IP-адреса.
    9. # Умолчальные настройки указывать не нужно, главное - ProxyCommand.
    10. Host internal.frominet
    11. Port 54321
    12. User superadmin
    13. # 192.168.1.2 - IP целевой машины в локальной сети. Можно указать имя хоста, если настроен локальный DNS-сервер.
    14. ProxyCommand ssh external-server.example.org 'netcat 192.168.1.2 %p'
  4. Выполняем:
    1. $ ssh internal.frominet
  5. ???
  6. PROFIT! =)