
Я использовал функцию удаленной пересылки 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_*
.