SSH тунель через сервер посередника - як підключитися за один крок (за допомогою пари ключів)?


9

В основному моє питання полягає в тому, як перетворити два існуючі два кроки в один крок.

У мене працює тунель SSH, встановлений між двома комп'ютерами, використовуючи посередницький сервер на зразок цього:

Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop

Зараз я роблю SSH від Kubuntu_laptop до Debian_Server, а потім від Debian_Server до Kubuntu_desktop. Я хотів би зробити одну команду SSH, видану на моєму Kubuntu_laptop в bash, що призводить до того, що я підключений до Kubuntu_desktop (shell / bash).

Команди, якими я зараз користуюся, є такими. Крок 1:

me@kubuntu_laptop:~$ ssh -i ~/.ssh/id_rsa admin@debian_server  

Крок 2:

admin@debian_server:$ ssh -p 1234 -i /home/admin/.ssh/id_rsa admin@localhost 

Потім я підключаюся до kubuntu_desktop через SSH (від kubuntu_laptop).

RSA-ключі потрібні для всіх SSH-з'єднань. Вхід із паролем вимкнено в усьому світі. І зауважте, що облікові записи користувачів комп'ютерів різні на двох комп’ютерах.

Що стосується з'єднання для цієї ноги:

Debian_Server<--nat_fw<--Kubuntu_desktop

Ось як це встановлено:

autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22

Зауважте, що Kubuntu_desktop підключається до посередника як user@mydebian.com (не адміністратор @ debian_server). Але коли я підключаюсь до Kubuntu_desktop, я підключаюсь як користувач адміністратора.

Я не можу змінити існуючий порт моніторингу (5234) або номер віддаленого (- R) (1234 у цьому прикладі). Я не можу змінити безпеку SSH, щоб дозволити вхід пароля. Не вдається відкрити нові порти брандмауера. Я не можу змінити облікові записи користувачів (за винятком ноутбука).


Погляньте на це питання: unix.stackexchange.com/questions/82158/…
Hauke ​​Laging

@HaukeLaging - здається цікавим, але я цього не розумію. Що таке "nc"? І на якій машині редагується ~ / .ssh / config? В основному, мені потрібно детальніше, ніж це питання / відповідь надає. Дякую.
MountainX

Це питання було перекладено (без повідомлення) на сервер Fault SE. Це дуже БАД форма!
mdpc

спасибі за низові відгуки скрізь, але що не так у тому, щоб запитати у двох різних місцях? Ви також збираєтесь заважати мені запитувати на ubuntuforums.org чи десь ще?
MountainX

@ HaukeLaging - Якщо за допомогою ProxyCommand у моєму ноутбуці ~ / .ssh / config, що мені ввести для імені хосту Kubuntu_Desktop? Немає fqdn. Це зворотний SSH. Дякую.
MountainX

Відповіді:


8

Переконайтесь, що netcat встановлений на сервері Debian та використовуйте його ProxyCommandу локальній конфігурації SSH ( ~/.ssh/config).

Host Kubuntu_desktop
  ProxyCommand ssh Debian_Server nc localhost 1234

Я дав усі свої кроки в іншій відповіді на повноту, але все це було завдяки вашій допомозі. Я приймаю вашу відповідь. Дякую!!!
MountainX

6

Завдяки @Ignacio Vaqueque-Abrams ось усі кроки:

Переконайтесь, що netcat встановлений на сервері Debian, і використовуйте ProxyCommand у вашій локальній конфігурації SSH (~ / .ssh / config).

Я редагував конфігурацію так:

me@kubuntu_laptop:~/.ssh$ nano config

Вміст:

Host kubuntu_desktop
  ProxyCommand ssh debian_server_fqdn nc localhost 1234
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Потім просто підключіться:

me@kubuntu_laptop:~$ ssh kubuntu_desktop

Підключено до kubuntu_desktop через SSH за 1 крок! Ідеально

Оновлення:

Це робить його більш гнучким:

me@kubuntu_laptop:~/.ssh$ nano config

Новий вміст:

Host family_desktops
  ProxyCommand ssh debian_server_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Тоді просто підключіться до мами:

me@kubuntu_laptop:~$ ssh family_desktops -p 1234

І підключиться до тата:

me@kubuntu_laptop:~$ ssh family_desktops -p 5678

Звичайно, мама і тато повинні встановити крок 0 (з мого оригінального запитання), де для кожного визначений власний -R порт. Приклад для тата:

Крок 0 (для тата):

autossh -M 6543 -N -f -R 5678:localhost:22 user@mydebian.com -p 22

Необов’язково:

DAD=5678
ssh family_desktops -p $DAD

ProxyCommand також може бути записаний так: ProxyCommand ssh debian_server_fqdn -W localhost:%pтому немає необхідності мати netcat на сервері Debian.
Кевін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.