1

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

ssh -N -n -R /home/guest/daemon.sock:/var/run/daemon.sock guest@example.com

Я хочу автоматизировать это, чтобы туннель создавался автоматически каждый раз, когда загружается моя машина. Я скопировал файл /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 ответ1

2

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

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

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

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


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

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

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