Bagaimana cara SSH ke localhost tanpa kata sandi?

17

EDIT: Puting persis apa yang dilakukan.

Saya perlu SSH untuk localhosttanpa kata sandi, cara biasa melakukannya (dengan kunci publik) tidak berfungsi.

user@PC:~$ rm -rf .ssh/*
user@PC:~$ ssh-keygen -t rsa > /dev/null 
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
user@PC:~$ ls .ssh/
id_rsa  id_rsa.pub
user@PC:~$ ssh-copy-id -i localhost 
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is f7:87:b5:4e:31:a1:72:11:8e:5f:d2:61:bd:b3:40:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh-agent $SHELL
user@PC:~$ ssh-add -L
The agent has no identities.
user@PC:~$ ssh-add 
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
user@PC:~$ ssh-add -L
ssh-rsa ...MY KEY HERE

user@PC:~$ ssh-copy-id -i localhost 
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh localhost echo 'testing'
user@localhost's password: 

user@PC:~$ 

Jadi seperti yang Anda lihat di perintah terakhir masih menanyakan kata sandi !!! Bagaimana saya bisa memperbaikinya ?? Ubuntu-10.04, OpenSSH_5.3p1

EDIT2:

Menambahkan beberapa info tentang sshd

user@PC:~$ cat /etc/ssh/sshd_config | grep Authentication
# Authentication:
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
ChallengeResponseAuthentication no
# PasswordAuthentication yes
#KerberosAuthentication no
#GSSAPIAuthentication no
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

EDIT3: Hasil iklan dari $ ssh -vv localhost

$ssh -vv localhost
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/identity
debug1: Offering public key: /home/user/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
user@localhost's password: 

EDIT4:

Hanya memeriksa apakah file-file itu sama dan md5sum setuju

Canesin
sumber
Apakah Anda memiliki RSAAuthentication yesdan PubkeyAuthentication yesdi / etc / ssh / sshd_config Anda? Apa yang ditampilkan ssh -vv localhost? Saya baru saja mencoba ini di kotak 10,04 dan tidak punya masalah ..
Doon
Hy Doon, memang .. Saya memiliki keduanya ya .. Saya menambahkan output ssh -vv dalam pertanyaan.
Canesin
Mengapa Anda perlu ssh ke localhost jika Anda sudah memiliki akses?
vtest
Perangkat lunak pemrosesan paralel menggunakan ssh / rsh lokal
Canesin
Tolong jangan memposting jawaban dalam pertanyaan atau memasukkan "ASK" dalam judul. Anda telah melakukan hal yang benar dengan memberikan jawaban. Setelah Anda menerima jawabannya, sistem akan menunjukkan bahwa masalahnya telah terpecahkan.
ChrisF

Jawaban:

10

Pertama-tama, Anda harus memahami apa yang Anda lakukan:

user@PC:~$ cat .ssh/id_rsa.pub | ssh localhost 'cat >> .ssh/authorized_keys'

Anda menyalin kunci publik .ssh/id_rsa.pubmelalui ssh, ke host yang sama (itulah host lokal, host yang sama). Jika Anda mengganti localhostdengan beberapa host lain, itu akan lebih masuk akal (tetapi jika Anda mencoba ini demi mempelajari cara melakukannya, tidak apa-apa).

Setelah Anda memiliki salinan kunci publik di host jarak jauh (atau yang sama dengan yang Anda gunakan), Anda harus memastikan bahwa Anda menggunakannya untuk otentikasi, di host Anda yang sebenarnya, memanggil ssh-agent/ ssh-add:

$ eval `ssh-agent`
$ ssh-add

Kemudian, jika Anda memberikan frasa sandi, Anda akan diminta untuk memasukkannya setelah itu ssh-add. Jika Anda membuat kunci pribadi tanpa frasa sandi, maka hanya itu.

Torian
sumber
Ya, saya mengerti perintahnya, saya hanya menjelaskan bahwa saya melakukan hal-hal yang biasa dengan kunci. Saya melakukan ssh-add ... tidak meminta kata sandi (karena saya tidak menggunakan kata sandi dalam penciptaan) .. tapi sekali lagi, lakukan, $ ssh localhost ls, ia meminta kata sandi
Canesin
Jadi, jika Anda mengeksekusi ssh-add, edit pertanyaan Anda dan masukkan semua yang Anda lakukan. Semakin banyak informasi yang Anda berikan, semakin baik dan semakin cepat jawabannya.
Torian
Maaf untuk itu, perbaiki sekarang .. Saya menambahkan terminal, melakukan semuanya lagi untuk menempelkannya di sini ..
Canesin
Terima kasih jutaan kali! BTW, mengapa " eval"?
IProblemFactory
3

Telah menemukan masalahnya.

Menjalankan server dengan debug:

$sshd -Dd

Saya menemukan itu tidak dapat membaca auth_key

$chmod 750 $HOME

Memperbaikinya.

Canesin
sumber
Apa flag file sebelumnya?
bbaja42
2

Lakukan langkah-langkah berikut

ssh-keygen -t rsa -C "[email protected]"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.

Gunakan file default dan frasa sandi kosong (Cukup tekan enter pada 2 langkah berikutnya)

# start the ssh-agent in the background
eval "$(ssh-agent -s)"
# Agent pid 59566
ssh-add 

Salin konten ~ / .ssh / id_rsa.pub ke ~ / .ssh / berwenang_kunci

Pastikan yang berikut adalah izinnya

 ls -l .ssh/
 total 20
-rw-r--r--. 1 swati swati  399 May  5 14:53 authorized_keys
-rw-r--r--. 1 swati swati  761 Jan 12 15:59 config
-rw-------. 1 swati swati 1671 Jan 12 15:44 id_rsa
-rw-r--r--. 1 swati swati  399 Jan 12 15:44 id_rsa.pub
-rw-r--r--. 1 swati swati  410 Jan 12 15:46 known_hosts 

Juga, pastikan izin untuk direktori .ssh. Ini juga penting

drwx------.   2 swati swati    4096 May  5 14:56 .ssh
swatisinghi
sumber
1
Pastikan 750 izin pada $ HOME
swatisinghi
Pada mesin saya (Fedora 28) pengaturan izin authorized_keyshingga 0600 menyelesaikan masalah, sementara izin .sshdirektori tidak berpengaruh pada sshing localhost
Chang Qian
1

Sederhanakan konfigurasi server

Saya pikir Anda mungkin perlu menonaktifkan otentikasi berbasis kata sandi. Ini adalah sshd_config yang saya gunakan

Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers peter paul mary
LogLevel VERBOSE

Cobalah sesuatu yang minimal terlebih dahulu, kemudian tambahkan karena Anda membutuhkan kemampuan ekstra.


Memperbarui:

Periksa log server

Dari EDIT3 Anda, saya melihat bahwa otentikasi kunci publik gagal sebelum klien mencoba otentikasi berbasis kata sandi. syslog server Anda mungkin berisi beberapa pesan dari sshd yang menjelaskan ini.

Muat ulang konfigurasi yang diubah

Ingatlah untuk memberi isyarat sshduntuk memuat ulang perubahan konfigurasi. Misalnyakill -HUP $(cat /etc/sshd.pid)

RedGrittyBrick
sumber
Saya pikir menonaktifkan otentikasi kata sandi ketika dia bahkan tidak bisa masuk tanpa kata sandi akan menjadi hal terakhir yang dia ingin lakukan (mengunci diri sepenuhnya)
Amalgovinus
@Amalgovinus: Pertanyaannya telah diedit secara luas sejak saya memposting jawaban awal saya. Saya kira saya bisa menghapus jawaban ini.
RedGrittyBrick
0

Mengenai posting di atas, saat menghadapi masalah yang sama, saya baru saja mengubah baris

PasswordAuthentication no

di file / etc / ssh / sshd_config dan berhasil.

Apalagi mungkin lebih baik digunakan

sshd layanan restart

untuk memuat ulang perubahan konfigurasi sshd.

Nicolas
sumber
0

Solusi lain untuk fitur Red Hat Enterprise Linux 6.5 SELinux mencegah sshd dari membaca $ HOME / .ssh adalah dengan menggunakan restorecon, lihat penjawab saya di sini /superuser//a/764020/213743 .

buzz3791
sumber
0

Bagi saya itu sesederhana

cat id_rsa.pub >> authorized_keys
pengguna695025
sumber
0

Saya memiliki masalah yang sama, saya mengikuti 3 langkah untuk membuat kata sandi lebih sedikit masuk dan berfungsi dengan baik

1. ssh-keygen -t rsa
Press enter for each line
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. chmod og-wx ~/.ssh/authorized_keys
Hadi Rahjoo
sumber