Uruchom SSH automatycznie przy starcie

15

Całkowicie nowy w Linuksie i Ubnuntu. Konfigurowanie maszyny do głębokiego uczenia / sieci neuronowych. Jak dotąd idzie dobrze. Mam wszystko zainstalowane i uruchomione. Chcę móc ssh z mojego laptopa Mac, aby korzystać z systemu. Zainstalowałem openssh i działałem .

Jednak po ponownym uruchomieniu komputera serwer ssh nie uruchamia się ponownie. Sprawdzam za pomocą, sudo service ssh statusa raporty i błędy. Następnie mogę go uruchomić i wszystko działa dobrze.

Moją pierwszą myślą było to, że muszę powiedzieć, aby zaczęło się przy ponownym uruchomieniu, i znalazłem ten wątek, który mówi, że powinien zacząć się domyślnie i nie muszę dodawać chrontab ani nic takiego. Więc nie sądzę, że o to chodzi.

Potem znalazłem ten wątek, który sugeruje użycie polecenia sudo update-rc.d ssh defaults, ale ten wątek jest dość stary i wydaje się, że odpowiedź była nieprawdziwa nawet wtedy?

Znalazłem więc ten wątek, który sugeruje skomentowanie ListenAddresslinii w pliku sshd_config . Zasadniczo mówi, że jeśli ListenAddress jest używany, może próbować uzyskać adres IP przed przypisaniem go przez DCHP, więc uruchomienie nie powiedzie się. Co ma sens. Potrzebuję tego parametru, aby przekierowanie portów działało w mojej sieci domowej.

Dokumentacja ta pod wpisem ListenAddress mówi o tym

The default is to listen on all local addresses.

Więc może nie potrzebuję tego, aby przekierowanie portów działało?

Śledziłem poprzedni wątek do tego raportu o błędach, który również jest dość stary, ale sugeruje użycie menedżera sieci do restartowania ssh za każdym razem, gdy netmanager otrzymuje nowe IP.

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

To o wiele więcej niż ten noobie może ocenić w tym momencie. Czy to jest bezpieczne? Czy to jest na to sposób? Czy w ciągu ostatnich 7 lat opracowano coś jeszcze?

Każda rada byłaby świetna. Dzięki.

Rothrock
źródło
Rany, po prostu zainstalowałem pakiet openssh-server i odpowiednio go skonfigurowałem. Mój serwer ssh automatycznie uruchamia się poprawnie za każdym razem. W ogóle nie ma potrzeby dodatkowego zabawy.
user535733
1
Czy używasz przekierowania portów i nie musiałeś używać parametru ListenAddress? Jeśli tak, czy możesz udostępnić, co obejmuje „prawidłowe skonfigurowanie”?
Rothrock
W tym celu nie podałeś żadnych informacji o stanie SSH przy pierwszym uruchomieniu. Co daje systemctl status sshwynik?
muru
Twój problem brzmi podobnie do tego (pozornie nierozwiązanego) Demon SSH nie uruchamia się normalnie - czy możesz edytować swoje pytanie, aby zawierało wyniksystemctl status NetworkManager-wait-online.service
steeldriver
1
Jak skonfigurowano przekierowanie portów? W ogóle nie używam ListenAddress i wszystko działa dobrze na moim serwerze domowym. Mój router przekazuje wszystko, co wchodzi na wskazany przeze mnie port (22, jeśli chcesz standardowego portu, ale możesz używać czegokolwiek, o ile nie koliduje on z innymi usługami w twojej sieci wewnętrznej) na komputer, który chcę. Na przykład wszystko, co wchodzi na port 12345, jest przekazywane do portu 22 na moim serwerze CentOS. Wszystko, co pojawia się w 12346, jest przekierowywane do portu 22 mojego bezgłowego RasPi. Wszystko, co pojawia się w 12347, trafia do portu 6697 dla bouncera IRC na moim RasPi.
RobertRSeattle

Odpowiedzi:

43

Czy próbowałeś po prostu ustawić

sudo systemctl enable ssh

?

Tak mam ustawić mój ssh do uruchamiania podczas uruchamiania.

**** Pozostawiam w powyższej części odpowiedzi na wypadek, gdyby była pomocna dla innych osób, które napotkają ten post ****

Cytując mój komentarz z góry:

Jak skonfigurowano przekierowanie portów? W ogóle nie używam ListenAddress i wszystko działa dobrze na moim serwerze domowym. Mój router przekazuje wszystko, co wchodzi na wskazany przeze mnie port (22, jeśli chcesz standardowego portu, ale możesz używać czegokolwiek, o ile nie koliduje on z innymi usługami w twojej sieci wewnętrznej) na komputer, który chcę. Na przykład wszystko, co wchodzi na port 12345, jest przekazywane do portu 22 na moim serwerze CentOS. Wszystko, co pojawia się w 12346, jest przekierowywane do portu 22 mojego bezgłowego RasPi. Wszystko, co pojawia się w 12347, trafia do portu 6697 dla bouncera IRC na moim RasPi

ListenAddress nie ma nic wspólnego z przekręcaniem portów, ListenAdress może być używany dla serwera, który jest skonfigurowany z wieloma adresami IP przez jedną lub więcej kart sieciowych. Cytowanie stąd (cała strona jest dobrym wyjaśnieniem): https://www.cyberciti.biz/tips/howto-openssh-sshd-listen-multiple-ip-address.html

Powiedzmy, że masz w sumie 8 publicznych adresów IP i jeden prywatny adres IP. > Chcesz powiązać sshd tylko z jednym wybranym publicznym adresem IP (np. 70.5.xx.xx) i prywatnym> IP (10.1.5.1).

Na szczęście istnieje prosty sposób na osiągnięcie tego celu za pomocą opcji ListenAddress. Określa lokalne adresy, na których sshd powinien nasłuchiwać. Jeśli ta dyrektywa jest> pomijana z pliku konfiguracyjnego, sshd powiąże lub wyświetli listę wszystkich dostępnych adresów IP>.

To pozwala jednemu z wielu twoich adresów IP zaakceptować połączenia ssh. Domyślam się, że ustawiłeś ListenAddress albo na swój publiczny adres IP, albo na wewnętrzny adres IP routera - domyślam się, że jeśli ustawisz to na lokalny adres IP twojego serwera, działałoby to dobrze. Niezależnie od tego, teraz wiesz, jak działa ListenAddress i będziesz gotowy, jeśli będziesz musiał skonfigurować bardziej skomplikowany serwer. Cieszę się, że wszystko działa.

RobertRSeattle
źródło
2
+1 To jest poprawna odpowiedź. Ubuntu 16.04 zaczął korzystać z systemd. Polecenie w tej odpowiedzi używa systemud do uruchomienia SSH przy ponownym uruchomieniu. Pozostałe wątki, które łączyły OP, dotyczyły tylko upstartu, nie były systemowe lub w ogóle nie dotyczyły ich problemu.
Sam Gleske,
1
Zrobiłem systemctl list-unit-files –type = service i widzę, że ssh.service jest włączony. Więc nie sądzę, że to jest problem. Ale dziękuję za wskazówkę dotyczącą systemctl / systemd. To daje mi więcej miejsc do patrzenia. Czy istnieje sposób, aby powiedzieć systemd / systemctl, aby poczekał, aż DCHP zwróci adres IP?
Rothrock
Po włączeniu należy utworzyć nowy plik, sprawdź za pomocą ls -l /etc/systemd/system/sshd.service
Timo
2

Ponieważ sugerowane rozwiązanie nie zadziałało, w końcu odkryłem, że potrzebne jest dodatkowe polecenie, aby uruchomić SSH podczas rozruchu:

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

Niektórzy wspominali, że to polecenie:

sudo systemctl enable ssh.service

należy wykonać zamiast tego polecenia:

sudo systemctl enable ssh
adambg
źródło
Ubuntu 18, żaden nie działał. Wymaganie ode mnie zalogowania z GUI, aby móc ssh z innego komputera.
deepdebugging