Как настроить автоматический SSH-туннель

Как настроить автоматический SSH-туннель

Я использовал функцию удаленной пересылки SSH для пересылки соединений с сокетом домена Unix на удаленном хосте example.comна сокет домена Unix на моей локальной машине. Обе машины работают под управлением Linux. Команда выглядит следующим образом:

ssh -N -n -R /home/guest/daemon.sock:/var/run/daemon.sock [email protected]

Я хочу автоматизировать это, чтобы туннель создавался автоматически каждый раз при загрузке моей машины. Я скопировал файл /etc/ssh/ssh_host_rsa_key.pub с моей локальной машины в удалённую /home/guest/.ssh/id_rsa.pubи добавил следующие строки на /etc/ssh/ssh_configмоей локальной машине:

Host example.com User guest IdentityFile /etc/ssh/ssh_host_rsa_key RemoteForward /home/guest/daemon.sock /var/run/daemon.sock

Из соображений безопасности я также хочу ограничить пользователя 'guest' на удаленной машине созданием туннеля и ничем другим. Поэтому я добавил следующие строки /etc/ssh/sshd_configна удаленном хосте:

match User guest AllowTcpForwarding yes X11Forwarding no AllowAgentForwarding no ForceCommand /bin/false

Вот в чем проблема: ничего не происходит, когда загружается моя локальная машина. Я уверен, что упускаю что-то важное, но не могу найти что. Есть идеи?

решение1

Файл ssh_configне делает абсолютно ничего для автоматизации SSH-подключений.

Он существует только для того, чтобы позволить определитьпараметры по умолчанию– всякий раз, когда вы запускаете ssh example.com, ищется соответствующий раздел «Хост» и все параметры добавляются в командную строку. (Можно сказать, что это похоже на псевдонимы оболочки.) ~/.ssh/configЧаще всего для той же цели используется per-user.

Но все еще остается на ваше усмотрение,бегатькоманду ssh, например, через модуль systemd .service, или скрипт /etc/init.d, или задание cron. (Не забудьте указать в службе, что ее необходимо запустить после настройки сети.)

(Тыможетпродолжайте использовать ssh_config, но здесь это бесполезно и только сделаетобычный(Подключения к example.comраздражающим. Просто укажите те же параметры непосредственно в файле службы.)


Хотя это и не противозаконно, но несколько странно повторно использовать ключ хоста для аутентификации на стороне клиента. Лучше было бы сгенерировать специальную пару ключей с помощью ssh-keygen.

И как отметил @Paul в комментарии, доверенные ключи должны быть перечислены authorized_keys— SSH-серверу нет дела ни до каких файлов id_*.

Связанный контент