Когда я получаю доступ к серверу из моей локальной сети, я сначала должен подключиться к своему главному серверу (все порты переходят на эту машину), а когда я нахожусь на моем главном сервере, я должен подключиться к следующей машине (которая доступна только из моей локальной сети).

Пример:

name@mylaptop:~$ ssh name@example.com
[Entering Password]
Logged in
name@mainserver:~$ ssh 192.168.0.1
[Entering password]
Logged in
name@otherserver:~$

Теперь я хочу подключиться с помощью FileZilla к основному серверу и "proxiyng" к "другому серверу". Как я могу сказать FileZilla использовать команду в начале? Или это вообще возможно?

2 ответа2

2

Я знаю, что этот вопрос задавался несколько месяцев назад, но когда я искал ответы на аналогичные требования, я нашел, что использование ProxyCommand OpenSSH очень полезно.

У меня есть что-то вроде следующей настройки в моем локальном конфигурационном файле клиента (мне фактически потребовалось три прыжка, чтобы добраться до моей цели: внешний сервер-> маршрутизатор -> целевой блок в частной сети)

In file ~/.ssh/config

Host myexternalserver
  User username1
  IdentityFile <key file for username1@myexternalserver>
  Hostname myexternalserver.fully.qualified.name

Host myrouter
  Hostname myrouter.fully.qualified.name
  User root
  IdentityFile <key file for root@myrouter>
  ProxyCommand ssh -q myexternalserver nc %h %p

Host mytarget
  Hostname mytarget.private.name
  User username2
  IdentityFile <key file for username2@mytarget>
  ProxyCommand ssh -q myrouter nc %h %p

Эта цепочка означает, что я могу просто напечатать

ssh mytarget

и будет отправлен через необходимые прыжки.

Все файлы ключей хранятся локально, поэтому вам не нужно помещать файлы на внешние серверы. Тот же конфиг работает даже для scp:

scp <localfile> mytarget:<remotepath>

Несколько альтернативных подходов к прокси-серверу ssh описаны на следующей странице викибук: http://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts

0

Вы можете настроить перенаправление портов на свой внутренний сервер.

name@mainserver:~$ sudo iptables -t nat -A PREROUTING -i <outward facing interface> -p tcp --dport 2222 -j DNAT --to-dest <other server's ip>:22

Это позволит перенаправить входящие соединения через порт 2222 на главном сервере на порт 22 на внутреннем сервере. Затем вы просто подключитесь к example.com через порт 2222.

Другой вариант - использовать переадресацию порта SSH.

name@mylaptop:~$ ssh name@example.com -L 2222:<other server's IP>:22

Пока этот сеанс SSH открыт, порт 2222 на вашем локальном компьютере будет маршрутизировать на порт 22 на внутреннем сервере. Затем вы должны подключиться к localhost через порт 2222.

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