Запустите SSH автоматически при загрузке

15

Совершенно новый для Linux и Ubnuntu. Настройка машины для глубокого обучения / нейронных сетей. Пока все идет хорошо. Все установлено и работает. Я хочу иметь возможность использовать SSH с моего ноутбука Mac для использования системы. Я установил openssh и получил, что работает.

Однако, когда я перезагружаю машину, сервер ssh не перезагружается. Я проверяю, sudo service ssh statusи это сообщает и ошибка. Затем я могу запустить его, и все работает нормально.

Моей первой мыслью было, что мне нужно сказать, чтобы он запускался при перезагрузке, и я нашел этот поток, в котором говорится, что он должен запускаться по умолчанию, и мне не нужно добавлять chrontab или что-то в этом роде. Так что я не думаю, что это так.

Затем я нашел эту ветку, в которой предлагается использовать команду sudo update-rc.d ssh defaults, но эта ветка довольно старая, и кажется, что ответ был, возможно, неправильным даже тогда?

Итак, я нашел этуListenAddress ветку, которая предлагает закомментировать строку в файле sshd_config . По сути, он говорит, что если ListenAddress используется, он может попытаться получить IP-адрес до того, как он был назначен DCHP, и поэтому запуск завершается неудачно. Что имеет смысл. Но мне нужен этот параметр, чтобы переадресация портов работала в моей домашней сети.

Эта документация под записью для ListenAddress говорит, что

The default is to listen on all local addresses.

Так может мне не нужно, чтобы переадресация портов работала?

Я следовал предыдущему обсуждению этого сообщения об ошибке, которое также довольно старое, но предлагает использовать сетевой менеджер для перезапуска ssh каждый раз, когда netmanager получает новый IP.

echo /etc/init.d/ssh restart > /etc/NetworkManager/dispatcher.d/10ssh
chmod 755 /etc/NetworkManager/dispatcher.d/10ssh

Это намного больше, чем может оценить этот новичок. Это безопасно? Это способ сделать это? Что-нибудь еще было разработано за последние 7 лет?

Будем признательны любому совету. Благодарю.

Rothrock
источник
Ну и дела, я просто установил пакет openssh-server и настроил его правильно. Мой сервер SSH автоматически запускается каждый раз, как правильно. Не нужно никаких дополнительных действий.
user535733
1
Вы используете переадресацию портов, и вам не нужно было использовать параметр ListenAddress? Если да, можете ли вы поделиться тем, что включает в себя «настроено правильно»?
Ротрок
При этом вы не предоставили никакой информации о состоянии SSH при первой загрузке. Что systemctl status sshвыводит?
Муру
Ваша проблема звучит примерно так (похоже, что она не решена). SSH Daemon запускается не так, как обычно - можете ли вы отредактировать свой вопрос, включив выводsystemctl status NetworkManager-wait-online.service
steeldriver
1
Как у вас есть настройки переадресации портов? Я вообще не использую ListenAddress, и на моем домашнем сервере все работает нормально. Мой маршрутизатор перенаправляет все, что входит на указанный мной порт (22, если вам нужен стандартный порт, но вы можете использовать что угодно, если только это не конфликтует с другими службами вашей международной сети) на компьютер, который я хочу. Например, все, что поступает на порт 12345, перенаправляется на порт 22 на моем сервере CentOS. Все, что приходит на 12346, направляется на порт 22 моего безголового RasPi. Все, что приходит на 12347, отправляется на порт 6697 для IRC-вышибала на моем RasPi.
RobertRSeattle

Ответы:

43

Вы пробовали просто установить

sudo systemctl enable ssh

?

Вот так у меня установлен SSH для запуска при запуске.

**** Я ухожу в приведенной выше части ответа, если это будет полезно для других, кто сталкивается с этим постом ****

Цитирую мой комментарий сверху:

Как у вас есть настройки переадресации портов? Я вообще не использую ListenAddress, и на моем домашнем сервере все работает нормально. Мой маршрутизатор перенаправляет все, что входит на указанный мной порт (22, если вам нужен стандартный порт, но вы можете использовать что угодно, если только это не конфликтует с другими службами вашей международной сети) на компьютер, который я хочу. Например, все, что поступает на порт 12345, перенаправляется на порт 22 на моем сервере CentOS. Все, что приходит на 12346, направляется на порт 22 моего безголового RasPi. Все, что приходит на 12347, идет на порт 6697 для IRC-батутера на моем RasPi.

ListenAddress не имеет ничего общего с переадресацией портов, ListenAdress можно использовать для сервера, настроенного с несколькими IP-адресами на одном или нескольких сетевых адаптерах. Цитирование здесь (вся страница - хорошее объяснение): https://www.cyberciti.biz/tips/howto-openssh-sshd-listen-multiple-ip-address.html

Допустим, у вас есть всего 8 общедоступных IP-адресов и один частный IP-адрес. Вы хотите связать sshd только с одним выбранным общедоступным IP-адресом (например, 70.5.xx.xx) и частным> IP-адресом (10.1.5.1).

К счастью, есть простой способ добиться этого, используя опцию ListenAddress. Он> указывает локальные адреса, которые должен прослушивать sshd. Если эта директива> пропущена из файла конфигурации, sshd свяжется или отобразит список всех доступных IP> адресов.

Это позволяет одному из ваших нескольких IP-адресов принимать соединения SSH. Я предполагаю, что вы установили ListenAddress либо для вашего публичного IP-адреса, либо для внутреннего IP-адреса вашего маршрутизатора. Полагаю, если вы установите для него локальный IP-адрес вашего сервера, он бы работал нормально. Независимо от этого, теперь вы знаете, как работает ListenAddress, и вы будете готовы, если вам придется настроить более сложный сервер. Рад слышать, что у тебя все работает.

RobertRSeattle
источник
2
+1 Это правильный ответ. Ubuntu 16.04 начал использовать systemd. Команда в этом ответе использует systemd для запуска SSH при перезагрузке. Другие потоки, с которыми связан OP, применяются только к upstart, а не к systemd или вообще не относятся к их проблеме.
Сэм Глезке
1
Я сделал systemctl list-unit-files –type = service и вижу, что ssh.service включен. Так что я не думаю, что это проблема. Но спасибо за совет по systemctl / systemd. Это дает мне больше мест для поиска. Есть ли способ сказать systemd / systemctl ждать, пока DCHP вернет IP-адрес?
Ротрок
После включения должен быть создан новый файл, сверьтесь сls -l /etc/systemd/system/sshd.service
Тимо
2

Поскольку предложенное решение не сработало для меня, я обнаружил, что для запуска SSH при загрузке необходима дополнительная команда:

sudo update-rc.d ssh defaults
sudo systemctl enable ssh.socket

Некоторые упоминали, что эта команда:

sudo systemctl enable ssh.service

следует выполнить вместо этой команды:

sudo systemctl enable ssh
adambg
источник
Ubuntu 18, никто не работал. Требование входа в систему через графический интерфейс, чтобы иметь возможность SSH с другой машины.
глубокая отладка