Туннель 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 (не admin @ debian_server). Но когда я подключаюсь к Kubuntu_desktop, я подключаюсь как администратор.

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


Посмотрите на этот вопрос: unix.stackexchange.com/questions/82158/…
Hauke ​​Laging

@HaukeLaging - кажется интересным, но я этого не понимаю. Что такое "нк"? И на какой машине редактируется ~ / .ssh / config? По сути, мне нужно больше подробностей, чем этот вопрос / ответ. Спасибо.
MountainX

Этот вопрос был вставлен (без уведомления) в Server 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 Vazquez-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.