2010-12-31 4 views
2

Вот моя ситуацияКак с ssh на удаленный сервер за несколькими брандмауэрами?

  • Я мог бы доступ к серверу А из моего дома ноутбук через SSH.
  • Сервер B доступен только с сервера A через ssh.
  • Сервер C доступен только с сервера B через ssh.

Есть ли в любом случае, что я мог бы настроить мой .ssh/config, чтобы я мог ssh на сервер C непосредственно с моего ноутбука? Мне нужно это, потому что мне нужно регулярно передавать файлы с сервера C обратно на мой ноутбук. Я использую «scp», но пройти через эту иерархию ssh вручную слишком тяжело. Мне интересно, можно ли сделать это с помощью магии ssh.

+0

Я не думаю, что вы можете обойти каждый 'ssh' (если не изменяя код). И я бы использовал 'rsync' вместо' scp' (а не то, что он решает вашу проблему, но ...). –

ответ

1

Вы хотите настроить SSH tunnels, чтобы позволить SSH, как это:

A => B 
B => C 

Вот пример того, как установить туннель к B через А на Linux:

ssh -f [email protected] -N -L 4444:hostB:22 

Затем должен иметь возможность передать ssh в порт 4444 на hostA и перенаправить на порт 22 (где обычно выполняется SSH) на hostB. После выполнения вышеуказанной команды попробуйте следующее:

ssh -p 4444 hostA 

Это должно связывать вас с hostB. Возможно, вам придется менять порты, чтобы это работало, если порт 4444 на hostA уже используется, вам нужно будет выбрать другой порт. Если предположить, что это работает, вы можете использовать ту же команду с разными именами хостов, чтобы установить туннель от B => C:

ssh -f [email protected] -N -L 4444:hostB:4444 
ssh -f [email protected] -N -L 4444:hostC:22 

Это также полезно, если вы хотите настроить SOCKS proxy для просмотра веб-страниц. Я делаю это так, чтобы мой веб-трафик выглядел так, как будто он приходит из моего университета, чтобы я мог использовать онлайн-доступ к научным журналам.

Ссылки:

Смежные вопросы