ssh tanpa kata sandi tidak berfungsi

35

Saya sudah mencoba untuk setup password-kurang ssh b / w Auntuk Bdan Buntuk Ajuga. Menghasilkan kunci publik dan pribadi menggunakan ssh-keygen -trsapada kedua mesin. Menggunakan ssh-copy-idutilitas untuk menyalin kunci publik dari Ake Bdan Bke A.

Kata sandi ssh berfungsi dari Ake Btetapi notdari Bke A. Saya telah memeriksa izin folder ~ / ssh / dan tampaknya normal.

A's .ssh izin folder:

-rw-------  1 root root 13530 2011-07-26 23:00 known_hosts
-rw-------  1 root root   403 2011-07-27 00:35 id_rsa.pub
-rw-------  1 root root  1675 2011-07-27 00:35 id_rsa
-rw-------  1 root root   799 2011-07-27 00:37 authorized_keys
drwxrwx--- 70 root root  4096 2011-07-27 00:37 ..
drwx------  2 root root  4096 2011-07-27 00:38 .

B's .ssh izin folder:

-rw------- 1 root root  884 2011-07-07 13:15 known_hosts
-rw-r--r-- 1 root root  396 2011-07-27 00:15 id_rsa.pub
-rw------- 1 root root 1675 2011-07-27 00:15 id_rsa
-rw------- 1 root root 2545 2011-07-27 00:36 authorized_keys
drwxr-xr-x 8 root root 4096 2011-07-06 19:44 ..
drwx------ 2 root root 4096 2011-07-27 00:15 .

Aadalah ubuntu 10.04 (OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 25 Mar 2009) Badalah mesin debian (OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19 Okt 2007)

Dari A:

#ssh B

bekerja dengan baik.

Dari B:

#ssh -vvv A 
...
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/identity ((nil))
debug2: key: /root/.ssh/id_rsa (0x7f1581f23a50)
debug2: key: /root/.ssh/id_dsa ((nil))
debug3: Wrote 64 bytes for a total of 1127
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,gssapi,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Offering public key: /root/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 1495
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
[email protected]'s password: 

Yang pada dasarnya berarti tidak mengautentikasi menggunakan file /root/id_rsa. Saya menjalankan ssh-addperintah di kedua mesin juga.

Bagian otentikasi /etc/ssh/sshd_configfile adalah

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files

Saya kehabisan ide. Bantuan apa pun akan dihargai.

Cuurious
sumber
Apa pengaturan PermitRootLoginpada /etc/ssh/sshd_configpada A?
taneli
@taneli:, yesjika tidak, pengguna tidak akan dimintai kata sandi.
Lekensteyn
Dalam kasus saya, saya harus menghapus komentar "IgnoreUserKnownHosts ya" di file "/ etc / ssh / sshd_config" di ubuntu 12.04
Martin Magakian

Jawaban:

24

Pastikan Anda telah mengikuti prosedur berikut:

Pada Mesin A

buka terminal dan masukkan perintah sebagai berikut:

root@aneesh-pc:~# id

Hanya untuk memastikan bahwa kita root.

Jika perintah di atas menampilkan sesuatu seperti di bawah ini kita root lagi beralih ke root menggunakan superintah

uid=0(root) gid=0(root) groups=0(root)

1) Buat kunci.

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
49:7d:30:7d:67:db:58:51:42:75:78:9c:06:e1:0c:8d root@aneesh-pc
The key's randomart image is:
+--[ RSA 2048]----+
|          ooo+==B|
|         . E=.o+B|
|        . . .+.*o|
|       . . .  ...|
|        S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+

Saya belum menggunakan kata sandi apa pun. Jika Anda membutuhkannya, Anda dapat menggunakannya.

2) Salin kunci publik ke .ssh/authorized_keysfile mesin B.

root@aneesh-pc:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@mylap
root@mylap's password: 

Sekarang coba masuk ke mesin, dengan ssh 'root@mylap', dan check in:

~/.ssh/authorized_keys

untuk memastikan kami belum menambahkan kunci tambahan yang tidak Anda harapkan.

Ganti mylap dengan nama host atau ip dari mesin yang ingin Anda login (mis. Mesin B)

3) Masuk ke B tanpa kata sandi

root@aneesh-pc:~# ssh root@mylap
Warning: Permanently added 'mylap,192.168.1.200' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Wed Jul 27 15:23:58 2011 from streaming-desktop.local
aneesh@mylap:~$

Di Mesin B

4) Buat kunci untuk masuk kembali ke Mesin A

root@mylap:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
35:9f:e7:81:ed:02:f9:fd:ad:ef:08:c6:4e:19:76:b1 root@streaming-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|          o   .  |
|         . + + o |
|        S o * E  |
|           = O . |
|            O +  |
|           + o o.|
|            . o+=|
+-----------------+

5) Salin kunci publik ke .ssh/authorized_keysfile mesin A.

root@mylap:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
root@aneesh-pc's password: 

Sekarang coba masuk ke mesin, dengan ssh 'root@aneesh-pc', dan check in:

.ssh/authorized_keys

untuk memastikan kami belum menambahkan kunci tambahan yang tidak Anda harapkan.

6) Login ke A tanpa kata sandi

ssh root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/


Last login: Tue Jul 26 18:52:55 2011 from 192.168.1.116

Jika Anda dapat menyelesaikan langkah-langkah ini, Anda selesai. Sekarang Anda memiliki dua mesin dengan login yang diaktifkan ssh-key (kunci publik).

aneeshep
sumber
melakukan semua 6 langkah seperti yang ditentukan, memverifikasi semua hal yang terkait hingga langkah 5, tetapi entah bagaimana langkah 6 tidak berfungsi
Cuurious
Bisakah Anda memberikan output dari perintah ini: 'ssh -v root @ aneesh-pc'. ganti nama pengguna dan nama host dengan milik Anda.
aneeshep
15
menemukan pelakunya izin /root(770) drwxrwx--- 70 root root 4096 2011-07-27 00:37 .. terlalu terbuka. Mengubah izin untuk drwxr-xr-xdan sekarang berfungsi. Tidak dapat membayangkan kenyataan bahwa izin direktori induk memengaruhi ssh.
Cuurious
1
@Cuurious Bagus tangkapan, direktori rumah saya telah 770menetapkan juga, berubah menjadi 750dan semuanya benar dengan dunia :) Saya selalu lupa bahwa linux prems dapat bekerja secara terbalik seperti itu.
lengkap
1
Kegagalan pada langkah 3. ssh-copy-id berjalan setelah saya memasukkan kata sandi, namun saya masih tidak bisa masuk tanpa diminta kata sandi, file Author_keys saya berisi teks .pub saya, dan saya menawarkan kunci saat login . Tidak berhasil Izin pada semua direktori sudah benar.
Matt Clark
44

Setelah mengatur ssh tanpa kata sandi , saya masih ditanyai kata sandi pengguna saya. Melihat pada /var/log/auth.logmesin remote menunjukkan masalah ini:

sshd[4215]: Authentication refused: bad ownership or modes for directory /home/<user>

Jadi, pastikan untuk melakukannya dengan benar:

chmod o-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Meskipun melarang pengguna lain untuk menulis di .sshfolder Anda sudah jelas, memiliki persyaratan yang sama untuk folder rumah Anda lebih sulit.

Juga, cek /etc/ssh/ssd_configuntuk memastikan bahwa RSAAuthenticationdan PubkeyAuthenticationpilihan yang tidak cacat. Defaultnya adalah yesseharusnya tidak menjadi masalah.

Maxime R.
sumber
juga pastikan folder yang tercantum di atas dimiliki oleh pengguna yang benar
GoalBased
Saya masuk ke situasi ini dengan menghapus arsip driver realtek yang dibuat dengan buruk. Itu mengubah pemilik pada direktori tempat saya membuka untar.
Paul McMillan
2
Folder rumah Anda tidak dapat ditulisi karena jika itu, maka saya bisa mengubah nama Anda ~/.sshmenjadi sesuatu yang lain, dan kemudian membuat yang baru dengan kunci saya sendiri di sana.
Kevin Panko
2
luar biasa! belum memikirkan mencari di log pada mesin host. Terima kasih!
user3099609
14

Mungkin hanya masalah izin tingkat yang lebih tinggi. Anda perlu menghapus izin menulis dari grup dan lainnya ke direktori home Anda dan direktori .ssh. Untuk memperbaiki izin ini, jalankan chmod 755 ~ ~/.sshatau chmod go-w ~ ~/.ssh.

Jika Anda masih mengalami masalah, keluarkan grep berikut pada log Anda:

sudo egrep -i 'ssh.*LOCAL_USER_NAME' /var/log/secure

(ganti LOCAL_USER_NAMEdengan nama pengguna lokal Anda ...)

Mudah-mudahan itu akan memberi tahu Anda lebih banyak tentang masalah Anda, dengan asumsi informasi otentikasi sshd sedang dicatat ke log aman, yang seharusnya secara default. Jika Anda melihat kesalahan yang terlihat seperti ini:

DATE HOSTNAME sshd [1317]: Otentikasi ditolak: kepemilikan buruk atau mode untuk direktori / jalur / ke / beberapa / direktori

Ini masalah yang dijelaskan di atas dan Anda perlu menemukan direktori yang dimaksud dan menghapus izin menulis dari grup dan lainnya.

Adapun alasan bahwa Anda perlu membatasi izin menulis ke direktori home Anda (meskipun izin sudah dibatasi pada .ssh dan direktori berikutnya), itu akan memungkinkan pengguna lain untuk mengganti nama direktori .ssh Anda dan membuat yang baru - walaupun itu akan tidak dapat digunakan sebagaimana adanya (karena izin salah) perbaikan untuk sebagian besar pengguna mungkin akan mengubah izin daripada memeriksa konten direktori ...

TLDNR : Mengizinkan akses tulis untuk grup dan / atau lainnya ke direktori home Anda akan membuat ssh force password login.

KTBiz
sumber
2

apakah Anda menggunakan akun root di setiap mesin? Biasanya di Ubuntu Anda akan menggunakan akun pengguna dan memberikannya hak istimewa sudo sebagaimana diperlukan.

Jika Anda menggunakan pengguna non root sudo chown $USER -R ~/.sshdapat memperbaiki masalah Anda

Hal-hal lain yang perlu diperiksa:

periksa bahwa B ini id_rsa.pubadalah di A authorized_keys.

periksa A's /etc/ssh/sshd_configberisi

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
Smithamax
sumber
Ya, saya telah mengaktifkan akun root di mesin Ubuntu, karenanya berjalan sebagai pengguna root di kedua sistem
Cuurious
Ya saya pikir, menambahkan beberapa saran lain yang mungkin Anda abaikan. Hasil itu benar-benar tidak berguna, bukan, mengapa rsa tidak diterima.
Smithamax
1
Anda benar alasan mengapa kunci rsa tidak diterima adalah elemen penting di sini saya kira :). sshd_config berisi elemen-elemen tersebut di atas, saya telah mengedit pertanyaan untuk memasukkan konten isi /etc/ssh/sshd_configfile
Cuurious
-3

di / etc / ssh / sshd_config pada perubahan target

PermitRootLogin no

untuk

PermitRootLogin ya

lalu bunuh -HUP PID sshd Anda:

root @ dzone2 # ps -ef | grep ssh root 28075 27576 0 17 Nov? 6:11 / usr / lib / ssh / sshd

root 17708 20618   0 10:09:30 pts/37      0:00 grep ssh root@dzone2 # kill -HUP 28075 root@dzone2 # ps -ef|grep ssh
root 17861 20618   0 10:09:44 pts/37      0:00 grep ssh
root 17852 27576   0 10:09:42 ?           0:00 /usr/lib/ssh/sshd
Duncan
sumber
1
Ini tidak akan membantu. Masalahnya adalah bahwa masuknya SSH tanpa kata sandi (otentikasi dengan pasangan kunci RSA) tidak berfungsi. Instruksi yang Anda berikan adalah untuk membuat rootlogin SSH berfungsi. Itu sama sekali tidak terkait dengan pertanyaan ini. Lebih jauh, jika rootakun diaktifkan (tidak secara default di Ubuntu), mengaktifkan rootlogin SSH bisa sangat berbahaya.
Eliah Kagan