Mulai SSH secara otomatis saat boot

15

Benar-benar baru untuk linux dan Ubnuntu. Menyiapkan mesin untuk melakukan pembelajaran mendalam / jaringan saraf. Sejauh ini berjalan dengan baik. Semuanya terinstal dan berjalan. Saya ingin dapat ssh dari laptop Mac saya untuk menggunakan sistem. Saya menginstal openssh dan membuatnya bekerja.

Namun ketika saya me-restart mesin, server ssh tidak me-restart. Saya memeriksa sudo service ssh statusdan melaporkan dan kesalahan. Saya kemudian dapat memulainya dan semuanya bekerja dengan baik.

Pikiran pertama saya adalah saya harus mengatakannya untuk memulai pada reboot, dan saya menemukan utas ini yang mengatakan bahwa itu harus dimulai secara default dan saya tidak perlu menambahkan chrontab atau sesuatu seperti itu. Jadi saya tidak berpikir begitu.

Lalu saya menemukan utas ini yang menyarankan menggunakan perintah sudo update-rc.d ssh defaults, tetapi utas itu sudah cukup lama dan sepertinya jawaban itu mungkin tidak benar bahkan saat itu?

Jadi kemudian saya menemukan utas ini yang menyarankan mengomentari ListenAddressbaris dalam file sshd_config . Pada dasarnya dikatakan jika ListenAddress digunakan, ia mungkin mencoba untuk mendapatkan IP sebelum ditugaskan oleh DCHP dan karena itu start up gagal. Itu masuk akal. Tapi saya perlu parameter itu untuk membuat port forwarding saya berfungsi melalui jaringan rumah saya.

Dokumentasi ini di bawah entri untuk ListenAddress mengatakan itu

The default is to listen on all local addresses.

Jadi mungkin saya tidak membutuhkannya untuk membuat port forwarding berfungsi?

Saya mengikuti utas sebelumnya untuk laporan bug ini yang juga cukup lama, tetapi menyarankan untuk menggunakan manajer jaringan untuk memulai kembali ssh setiap kali netmanager mendapatkan IP baru.

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

Itu jauh lebih banyak daripada yang dapat dievaluasi noobie ini pada saat ini. Apakah itu aman? Apakah itu cara untuk melakukan ini? Apakah ada hal lain yang berhasil dalam 7 tahun terakhir?

Nasihat apa pun akan bagus. Terima kasih.

Rothrock
sumber
Astaga, saya cukup menginstal paket openssh-server dan mengkonfigurasinya dengan benar. Server ssh saya secara otomatis mulai dengan benar setiap saat sejak itu. Tidak perlu mengutak-atik ekstra sama sekali.
user535733
1
Apakah Anda menggunakan penerusan porta dan Anda tidak perlu menggunakan parameter ListenAddress? Jika demikian, dapatkah Anda membagikan apa yang termasuk "dikonfigurasi dengan benar"?
Rothrock
Untuk semua ini, Anda belum memberikan informasi apa pun tentang status SSH saat pertama kali boot. Apa artinya systemctl status sshoutput?
muru
Masalah Anda kedengarannya mirip dengan ini (tampaknya belum terselesaikan) SSH Daemon tidak dimulai dengan cara biasa - dapatkah Anda mengedit pertanyaan Anda untuk menyertakan output darisystemctl status NetworkManager-wait-online.service
steeldriver
1
Bagaimana Anda memiliki pengaturan penerusan porta? Saya tidak menggunakan ListenAddress sama sekali dan semuanya bekerja dengan baik di server rumah saya. Router saya meneruskan segala sesuatu yang masuk pada port yang saya tentukan (22 jika Anda menginginkan port standar, tetapi Anda dapat menggunakan apa saja asalkan tidak bertentangan dengan layanan lain di jaringan intl Anda) ke komputer yang saya inginkan. Misalnya apa pun yang masuk pada port 12345 akan diteruskan ke port 22 di server CentOS saya. Apa pun yang datang pada 12346 akan diteruskan ke port 22 dari RasPi tanpa kepala saya. Apa pun yang masuk pada 12347 masuk ke port 6697 untuk bouncer IRC di RasPi saya.
RobertRSeattle

Jawaban:

43

Sudahkah Anda mencoba pengaturan saja

sudo systemctl enable ssh

?

Begitulah cara saya mengatur ssh saya untuk dijalankan saat start up.

**** Saya meninggalkan bagian jawaban di atas jika bermanfaat bagi orang lain yang menemukan posting ini ****

Mengutip komentar saya dari atas:

Bagaimana Anda memiliki pengaturan penerusan porta? Saya tidak menggunakan ListenAddress sama sekali dan semuanya bekerja dengan baik di server rumah saya. Router saya meneruskan segala sesuatu yang masuk pada port yang saya tentukan (22 jika Anda menginginkan port standar, tetapi Anda dapat menggunakan apa saja asalkan tidak bertentangan dengan layanan lain di jaringan internasional Anda) ke komputer yang saya inginkan. Misalnya apa pun yang masuk pada port 12345 akan diteruskan ke port 22 di server CentOS saya. Apa pun yang datang pada 12346 akan diteruskan ke port 22 dari RasPi tanpa kepala saya. Apa pun yang masuk pada 12347 masuk ke port 6697 untuk bouncer IRC di RasPi saya

ListenAddress tidak ada hubungannya dengan port forwading, ListenAdress dapat digunakan untuk server yang dikonfigurasi dengan beberapa alamat IP melalui satu atau lebih NIC. Mengutip dari sini (seluruh halaman adalah penjelasan yang baik): https://www.cyberciti.biz/tips/howto-openssh-sshd-listen-multiple-ip-address.html

Katakanlah Anda memiliki total 8 alamat IP publik dan satu alamat IP pribadi. Anda> ingin mengikat sshd ke satu IP publik yang dipilih (mis. 70.5.xx.xx) dan pribadi> IP (10.1.5.1) saja.

Untungnya ada cara mudah untuk mencapai ini menggunakan opsi ListenAddress. Ini menentukan alamat lokal yang harus didengarkan sshd. Jika direktif ini dilewati> dari file konfigurasi sshd akan mengikat atau mendaftar pada semua alamat IP> yang tersedia.

Ini untuk memungkinkan salah satu dari beberapa IP Anda menerima koneksi ssh. Saya kira Anda mengatur ListenAddress menjadi IP publik atau IP internal router Anda - Saya kira jika Anda mengaturnya ke IP lokal server Anda, itu akan berfungsi dengan baik. Apa pun itu, sekarang Anda tahu cara kerja ListenAddress dan Anda akan siap jika Anda harus mengonfigurasi server yang lebih rumit. Senang mendengar Anda berhasil.

RobertReeattle
sumber
2
+1 Ini adalah jawaban yang benar. Ubuntu 16.04 mulai menggunakan systemd. Perintah dalam jawaban ini menggunakan systemd untuk memulai SSH saat reboot. Utas lainnya yang tertaut OP hanya berlaku untuk pemula dan tidak systemd atau tidak berlaku untuk masalah mereka sama sekali.
Sam Gleske
1
Saya melakukan systemctl daftar-unit-file –type = layanan dan saya melihat bahwa ssh.service diaktifkan. Jadi saya tidak berpikir itu masalahnya. Tapi terima kasih atas tipnya pada systemctl / systemd. Itu memberi saya lebih banyak tempat untuk dilihat. Apakah ada cara untuk memberitahu systemd / systemctl untuk menunggu sampai DCHP mengembalikan alamat IP?
Rothrock
Setelah diaktifkan, file baru harus dibuat, periksa denganls -l /etc/systemd/system/sshd.service
Timo
2

Karena solusi yang disarankan tidak bekerja untuk saya, saya akhirnya menemukan bahwa perintah tambahan diperlukan untuk memulai SSH saat boot:

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

Beberapa menyebutkan bahwa perintah ini:

sudo systemctl enable ssh.service

harus dieksekusi daripada perintah ini:

sudo systemctl enable ssh
adambg
sumber
Ubuntu 18, tidak ada yang berfungsi. Mengharuskan saya login dari GUI untuk dapat ssh dari komputer lain.
deepdebugging