Pertanyaan Cara mengatur akses SSH tanpa password untuk pengguna root [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Saya perlu mengkonfigurasi mesin sehingga penginstalan perangkat lunak dapat dilakukan secara otomatis dari jarak jauh melalui SSH. Berikut wiki, Saya dapat men-setup kunci SSH sehingga pengguna saya dapat mengakses mesin tanpa kata sandi, tetapi saya masih perlu memasukkan kata sandi secara manual ketika saya menggunakan sudo, yang jelas tidak harus dilakukan oleh proses otomatis.

Meskipun saya /etc/ssh/sshd_config punya PermitRootLogin yes, Sepertinya saya tidak bisa masuk sebagai root, mungkin karena ini bukan akun "nyata" dengan kata sandi terpisah.

Bagaimana cara mengkonfigurasi kunci SSH, sehingga suatu proses dapat login dari jarak jauh sebagai root di Ubuntu?


38
2018-03-22 17:01


asal


Jika Anda mengotomatiskan penginstalan dari mesin pusat, Anda dapat membatasi cakupan kunci sehingga hanya akan diterima dari host yang diberikan. Cukup awali baris di authorized_keys dengan dari = "host.ip.goes.here" ssh-rsa [...] - Egil
Pada akhirnya, pertanyaan ini memiliki judul yang buruk. Pengguna sudah dapat masuk melalui ssh dengan kunci tanpa kata sandi tetapi sekarang ingin menjalankan sudo tanpa kata sandi. Saya merevisi jawaban untuk mengatasi kedua masalah karena pertanyaan ini dihubungkan sebagai cara menghasilkan kunci ssh tanpa kunci (karena judul yang buruk). - Panther


Jawaban:


Bagian 1: Kunci SSH tanpa kata sandi

Untuk mengatur koneksi SSH tanpa password untuk pengguna root Anda harus memiliki akses root pada server. Metode termudah adalah untuk sementara izinkan root untuk masuk melalui ssh melalui kata sandi. Salah satu cara atau yang lain Anda memerlukan akses root pada server untuk melakukan ini. Jika Anda tidak memiliki akses root di server, hubungi administrator server untuk bantuan.

Pada klien (di mana Anda ssh FROM)

Pertama buat kunci ssh tanpa kata sandi. Saya sangat menyarankan Anda memberinya nama daripada menggunakan default

ssh-keygen -f foo

Opsi -f menentukan nama file, foo adalah contoh, gunakan nama apa pun yang Anda inginkan.

Ketika Anda diminta untuk memasukkan kata sandi, cukup tekan tombol enter dan Anda akan menghasilkan kunci tanpa kata sandi.

Selanjutnya Anda perlu mentransfer kunci ke server. Metode termudah adalah menggunakan ssh-copy-id . Untuk melakukan ini, Anda harus secara sementara mengizinkan root ke ssh ke server.

Di server (di mana Anda ssh TO)

sunting /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Pastikan Anda mengizinkan root untuk masuk dengan sintaks berikut

PasswordAuthentication yes
PermitRootLogin yes

Mulai ulang server

sudo service ssh restart

Tetapkan kata sandi root, gunakan kata sandi yang kuat

sudo passwd

Di klien:

Dari klien, Transfer kunci ke server

ssh-copy-id -i ~/.ssh/foo root@server

ubah "foo" nama kunci Anda dan masukkan kata sandi root server Anda ketika diminta.

Uji kuncinya

ssh -i ~/.ssh/foo root@server

Dengan asumsi itu berfungsi, unset password root dan menonaktifkan kata sandi login.

Di server:

sudo passwd -l root

Edit /etc/ssh/sshd_config

sudo nano `/etc/ssh/sshd_config`

Ubah yang berikut:

PasswordAuthentication no
PermitRootLogin without-password

Mulai ulang server

sudo service ssh restart

Di klien (Test):

Anda sekarang harus dapat menggunakan kunci Anda tanpa kata sandi dan Anda seharusnya tidak dapat ssh sebagai pengguna tanpa kunci.

ssh -i ~/.ssh/foo root@server

Bagian 2: Menjalankan perintah melalui sudo tanpa memasukkan kata sandi

Anda mengkonfigurasi sudo untuk memungkinkan Anda menjalankan perintah tanpa kata sandi.

Ini dijawab di sini di dua tempat:

Dari keduanya, saya sarankan untuk memungkinkan beberapa perintah mungkin (jawaban pertama) daripada semua perintah (jawaban kedua).


47
2018-03-22 17:09



@Ashimema untuk sudo -i lihat ubuntuforums.org/showthread.php?t=1817402 dan askubuntu.com/questions/376199/… dan help.ubuntu.com/community/… - Panther
@Ashimema - jadi Anda membuat kunci? Di mana Anda membuat kuncinya? Di server? jadi bagaimana mesin klien mendapatkan kuncinya? Di klien? jadi bagaimana kuncinya sampai ke server? Metode yang "tepat" yaitu yang paling mudah adalah membuat kunci pada mesin klien (tidak memerlukan root) dan menggunakan ssh-copy-id untuk mentransfer kunci ke server. - Panther
Itu meningkat cepat. Secara pribadi, saya tidak terkesan dengan penulisan ulang lengkap dari sejumlah sudut tetapi karena saya bukan kontributor biasa di sini lagi saya benar-benar tidak dalam kerangka pikiran untuk trolling lebih lanjut. Terima kasih telah menaut ke sudo -i informasi, itu adalah bacaan yang menarik. - Ashimema
Cara menghapus banyak komentar bermanfaat - Ashimema
'Buat kunci' .. pertanyaan asli dengan jelas menyatakan bahwa mereka sudah membuat kunci dan terkait dengan dokumentasi tentang bagaimana. - Ashimema


Anda membingungkan dua hal yang berbeda:

log tanpa kata sandi digunakan untuk memastikan bahwa orang tidak dapat masuk ke sistem Anda dari jarak jauh dengan menebak kata sandi Anda. Jika Anda bisa ssh username @ machine dan terhubung tanpa kata sandi, ini sudah diatur dengan benar, dan tidak ada lagi yang bisa dilakukan dengan ini.

sudodigunakan untuk mengizinkan akun pengguna normal untuk melakukan sesuatu dengan izin pengguna super. Ini tidak mengharuskan pengguna mengetikkan kata sandinya. Ini terjadi jika Anda terhubung dari jarak jauh (melalui SSH tanpa sandi atau kata sandi yang dilindungi sandi) atau lokal di komputer. Anda mencoba mengatur sudo untuk tidak meminta kata sandi Anda, yang tidak disarankan, tetapi Anda dapat mempelajari cara melakukannya melalui jawaban seperti https://askubuntu.com/a/74083/6161

Catatan untuk pembaca selanjutnya dari jawaban ini:

Jawaban saya di atas tidak menjawab pertanyaan sebenarnya dari poster asli, itu menjelaskan apa yang Anda harus lakukan sebagai gantinya. Jika kamu sangat ingin mengizinkan koneksi jarak jauh secara langsung ke akun root, Anda harus mengaktifkan akun root (lihat komentar saya di bawah). Sekali lagi, izinkan saya katakan TIDAK izinkan remote remote log-in ke akun root Anda.


8
2018-03-22 17:10



Anda salah paham dengan saya. Saya tahu perbedaan antara SSH dan sudo. Masalahnya adalah bahwa saya tidak dapat menggunakan ssh menggunakan root @ machine. Menggunakan akun "normal" saya dan menambahkannya ke file sudoers saya akan mencapai hal yang sama, tetapi saya mencoba melakukannya hanya melalui SSH. Ini mungkin dalam distro berbasis Redhat. Saya mengambil jawaban Anda untuk mengartikan ini tidak mungkin dalam distro berbasis Debian. - Cerin
@Cerin Ah - Anda ingin mengaktifkan login root askubuntu.com/q/44418/6161  Sekali lagi, ini hampir selalu buruk ide, terutama ketika Anda mengizinkan koneksi eksternal. Namun, tautan di komentar menjelaskan cara melakukannya. - David Oneill
Terima kasih. Karena tujuan saya adalah instalasi perangkat lunak otomatis, apakah itu penting apakah saya menambahkan pengguna non-root ke sudoers, atau mengizinkan login root? Ada kekhawatiran keamanan potensial, tetapi salah satunya diperlukan. - Cerin
sudo menyediakan kontrol yang lebih halus. Misalnya, Anda dapat mengizinkan pengguna non-root untuk menjalankan apt sebagai root tanpa memberikan kata sandi, tetapi bukan perintah arbitrary. Karena tujuan Anda adalah instalasi perangkat lunak otomatis, Anda harus menggunakan solusi yang paling tidak diistimewakan untuk mencapai tujuan Anda. - Egil
@Cerin Ya, itu penting. Di luar apa yang ditunjukkan Egil, askubuntu.com/q/16178/6161 adalah keseluruhan diskusi tentang mengapa login di root adalah ide yang buruk. - David Oneill


PermitRootLogin mengontrol apakah pengguna bernama "root" (tepatnya: pengguna dengan UID 0) diperbolehkan untuk login. Jika Anda masuk sebagai root, Anda tidak perlu sudo untuk melakukan tugas-tugas istimewa.

Di sisi lain, jika Anda login di akun pengguna dan gunakan sudo tanpa kata sandi, Anda harus mengkonfigurasi file sudoers tanpa harus bermain-main /etc/ssh/sshd_config. Lihat Cara membuat Ubuntu mengingat kata sandi selamanya setelah pertama kali


2
2018-06-01 05:31





Q. Login ke remote host sebagai pengguna root menggunakan SSH tanpa password (misalnya ssh root @ remotehost_ip)

A. Untuk masuk ke host jarak jauh sebagai pengguna root menggunakan SSH tanpa password ikuti langkah-langkah di bawah ini.

Langkah 1:
Pertama Anda harus membagi kunci publik pengguna lokal dengan file otorisasi pengguna root user root. Ada banyak cara untuk melakukannya, ini satu contohnya.

https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2

Atau Anda dapat menyalin paste konten kunci publik Anda ke file authorized_keys pengguna root pengguna jarak jauh.

Langkah ke-2:
Konfigurasikan ssh untuk mengizinkan login tanpa password di host jarak jauh. Login ke remote host dan edit file / etc / ssh / sshd_config kemudian restart layanan ssh. Jangan lupa untuk berkomentar "PermitRootLogin ya".

#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no

#service ssh restart

Komentar #PermitRootLogin ya

Langkah ke-3:
Uji koneksi Anda dari mesin lokal Anda menggunakan pengguna yang kunci publiknya dibagikan sebelumnya.

$ssh root@remotehost_ip

2



Ternyata StrictModes tidak penting pada beberapa sistem - David Okwii