ssh через несколько хостов

Чтобы добраться до моей машины в моем офисе, на данный момент я делаю это:

[email protected]:~$ ssh unix.university.com
[email protected]:~$ ssh unix.department.univeristy.com
[email protected]:~$ ssh office-machine.department.university.com
[email protected]:~$ echo "This is very annoying"

Есть ли простой способ автоматизации этого процесса, возможно, единственная команда, которую я могу использовать в конце?

28 голосов | спросил Lucas 21 12011vEurope/Moscow11bEurope/MoscowMon, 21 Nov 2011 06:46:42 +0400 2011, 06:46:42

4 ответа


24

Вы можете использовать ssh-клиент для выполнения ssh на удаленном компьютере после входа в систему.

ssh -t unix.university.com \
    ssh -t unix.department.univeristy.com \
    ssh -t office-machine.department.university.com

(Причина, по которой я включаю -t в invocations, потому что ssh давал мне ошибки re: stdin не был терминалом, когда я пытался это на моей машине, ваша машина может быть другой.)

Когда вы выйдете из последней оболочки, процесс завершит цепочку, и вы снова и снова печатаете Ctrl-D .

ответил amphetamachine 21 12011vEurope/Moscow11bEurope/MoscowMon, 21 Nov 2011 06:50:49 +0400 2011, 06:50:49
30

Да, есть отличный способ сделать это, используя ssh ProxyCommand и netcat

Поместите что-то вроде этого в ваш .ssh /config

Host *.department.university.com
User me
ForwardAgent yes
ProxyCommand ssh unix.university.com nc %h %p

Это будет записываться непосредственно на любой сервер .department.university.com с помощью хоста unix.university.com для прыжка /бастиона. Вам также может понадобиться строфа для unix.university.com.

Вот ссылка, объясняющая, как это работает: http://backdrift.org/transparent-proxy-with-ssh

С помощью этой техники вы можете просто написать

ssh unix.department.university.com

, и все это будет казаться прямым. Инструменты, такие как rsync, scp и т. Д. (Что-нибудь в стеке ssh) также будут работать прозрачно.

ответил Aaron Brown 21 12011vEurope/Moscow11bEurope/MoscowMon, 21 Nov 2011 17:48:49 +0400 2011, 17:48:49
2

В OpenSSH 7.3 ssh добавил флаг командной строки -J и соответствующий ProxyJump, чтобы решить эту проблему.

Дайте хостам, которые вы хотите передать через ssh, в виде списка, разделенного запятыми, на -J. Например:

ssh -J unix.university.com,unix.department.university.com  \
  office-machine.department.university.com
ответил Miikka 13 +03002017-10-13T23:33:23+03:00312017bEurope/MoscowFri, 13 Oct 2017 23:33:23 +0300 2017, 23:33:23
-4

SSH-туннелирование. Я точно не помню, как это сделать, но я знаю, что есть способ, чтобы машина позволяла туннелю, возможно, подключаться к отдельному порту. Таким образом, вы просто используете оболочку для одной и той же начальной машины (например, с другим портом), и она будет останавливаться на вашем конечном месте.

Нужно будет посмотреть, как его настроить.

:)

ответил Anthony Hurst 25 52011vEurope/Moscow11bEurope/MoscowFri, 25 Nov 2011 03:27:02 +0400 2011, 03:27:02

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132