Запустити 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 років?

Будь-яка порада була б чудовою. Спасибі.


Боже, я просто встановив пакунок opensh-сервера і правильно налаштував його. Мій ssh-сервер автоматично запускався належним чином кожного разу з тих пір. Зовсім немає необхідності в будь-яких зайвих кайфах.
користувач535733

1
Ви використовуєте переадресацію портів і вам не потрібно було використовувати параметр ListenAddress? Якщо так, чи можете ви поділитися тим, що включає "правильно налаштовано"?
Rothrock

Зважаючи на все це, ви не надали жодної інформації про стан 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-адресами на одному або декількох NIC. Цитуючи звідси (вся сторінка - це хороше пояснення): 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, і ви будете готові, якщо вам доведеться налаштувати більш складний сервер. Радий почути, що у вас все працює.


2
+1 Це правильна відповідь. Ubuntu 16.04 почав використовувати systemd. Команда у цій відповіді використовує systemd для запуску SSH при перезавантаженні. Інші потоки, з якими пов'язані ОП, застосовуються лише до запуску, а не системні або взагалі не стосуються їхньої проблеми.
Сем Глеске

1
Я зробив systemctl list-unit-files –type = service і бачу, що ssh.service увімкнено. Тому я не думаю, що це проблема. Але дякую за підказку на systemctl / systemd. Це дає мені більше місць подивитися. Чи є спосіб сказати systemd / systemctl чекати, поки DCHP поверне IP-адресу?
Rothrock

Після активації слід створити новий файл, зверніться до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

Ubuntu 18, жоден не працював. Вимагаючи від мене реєстраційного входу з графічного інтерфейсу, щоб мати змогу ssh з іншої машини.
глибоке налагодження
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.