Wie SSH zu localhost ohne Passwort?

17

EDIT: Putting genau das, was getan wurde.

Ich brauche um SSH localhostohne Passwort, die übliche Vorgehensweise (mit öffentlichen Schlüsseln) funktioniert nicht.

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:~$ 

Wie Sie im letzten Befehl sehen können, werden Sie immer noch nach dem Passwort gefragt !!! Wie kann ich das beheben? Ubuntu-10.04, OpenSSH_5.3p1

EDIT2:

Hinzufügen von Informationen zum 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: Ading-Ergebnis von $ 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:

Ich überprüfe nur, ob die Dateien identisch sind und die MD5-Summe übereinstimmt

Canesin
quelle
Haben Sie RSAAuthentication yesund PubkeyAuthentication yesin Ihrer / etc / ssh / sshd_config? Was zeigt ssh -vv localhost? Ich habe es gerade mit einer 10.04 Box versucht und hatte kein Problem.
Doon
Hy Doon, in der Tat .. Ich habe beides zu ja .. Ich habe die Ausgabe von ssh -vv in die Frage aufgenommen.
Canesin
Warum müssen Sie zu localhost ssh, wenn Sie bereits Zugriff haben?
Vtest
Parallelverarbeitungssoftware verwendet lokales ssh / rsh
Canesin
Bitte posten Sie die Antwort nicht in der Frage oder setzen Sie "Gelöst" in den Titel. Sie haben das Richtige getan, indem Sie eine Antwort gegeben haben. Sobald Sie die Antwort akzeptiert haben, zeigt das System an, dass das Problem behoben ist.
ChrisF

Antworten:

10

Zunächst sollten Sie verstehen, was Sie tun:

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

Sie kopieren den öffentlichen Schlüssel .ssh/id_rsa.pubüber ssh auf denselben Host (das ist localhost, derselbe Host). Wenn Sie durch localhosteinen anderen Host ersetzen , ist dies sinnvoller (aber wenn Sie dies versuchen, um zu lernen, wie es geht, ist das in Ordnung).

Sobald Sie eine Kopie Ihres öffentlichen Schlüssels auf dem Remote-Host haben (oder auf dem gleichen, in dem Sie sich befinden), müssen Sie sicherstellen, dass Sie ihn für die Authentifizierung in Ihrem tatsächlichen Host verwenden und ssh-agent/ aufrufen ssh-add:

$ eval `ssh-agent`
$ ssh-add

Wenn Sie dann eine Passphrase eingegeben haben, werden Sie aufgefordert, diese nach der Eingabe einzugeben ssh-add. Wenn Sie einen privaten Schlüssel ohne Passphrase generiert haben, ist das alles.

Torian
quelle
Ja, ich verstehe die Befehle. Ich habe es nur so ausgedrückt, um zu verdeutlichen, dass ich die üblichen Dinge mit den Schlüsseln gemacht habe. Ich habe ssh-add ... es kann das Passwort nicht fragen (wie ich keine in der Schöpfung verwendet) .. aber auch hier tun, $ ssh localhost ls, es fragt nach dem Passwort
Canesin
Wenn Sie also ausgeführt haben ssh-add, bearbeiten Sie bitte Ihre Frage und geben Sie alles an, was Sie getan haben. Je mehr Informationen Sie geben, desto besser und schneller ist die Antwort.
Torian
Entschuldigung, jetzt behoben. Ich fügte das Terminal hinzu, tat alles noch einmal, um hier
einzufügen
Tausendfachen Dank! Übrigens, warum " eval"?
IProblemFactory
3

Habe das Problem entdeckt.

Server mit Debugging ausführen:

$sshd -Dd

Ich stellte fest, dass der auth_key nicht gelesen werden konnte

$chmod 750 $HOME

Repariert.

Canesin
quelle
Was waren die vorherigen Dateiflaggen?
bbaja42
2

Führen Sie die folgenden Schritte aus

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.

Standarddatei und leere Passphrase verwenden (in den nächsten 2 Schritten einfach die Eingabetaste drücken)

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

Kopieren Sie den Inhalt von ~ / .ssh / id_rsa.pub nach ~ / .ssh / authorized_keys

Stellen Sie sicher, dass die folgenden Berechtigungen vorhanden sind

 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 

Stellen Sie außerdem sicher, dass die Berechtigungen für das Verzeichnis .ssh vorliegen. Das ist auch wichtig

drwx------.   2 swati swati    4096 May  5 14:56 .ssh
swatisinghi
quelle
1
Stellen Sie sicher, 750 Berechtigungen auf $ HOME
swatisinghi
Auf meinem Computer (Fedora 28) authorized_keysbehebt das Festlegen der Berechtigung auf 0600 das Problem, während die Berechtigung des .sshVerzeichnisses keine Auswirkungen auf sshing localhost
Chang Qian
1

Vereinfachen Sie die Serverkonfiguration

Möglicherweise müssen Sie die kennwortbasierte Authentifizierung deaktivieren. Dies ist eine sshd_config, die ich benutze

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

Probieren Sie zuerst etwas Minimales aus und ergänzen Sie es dann, wenn Sie zusätzliche Funktionen benötigen.


Aktualisieren:

Überprüfen Sie die Serverprotokolle

In EDIT3 wird angezeigt, dass die Authentifizierung mit öffentlichem Schlüssel fehlschlägt, bevor der Client eine kennwortbasierte Authentifizierung versucht. Das Syslog Ihres Servers kann einige Nachrichten von sshd enthalten, die etwas Licht in diese Richtung bringen.

Geänderte Konfigurationen neu laden

Denken Sie daran, zu signalisieren sshd, dass alle Konfigurationsänderungen neu geladen werden sollen. Z.Bkill -HUP $(cat /etc/sshd.pid)

RedGrittyBrick
quelle
Ich denke, das Deaktivieren der Passwortauthentifizierung, wenn er nicht einmal ohne das Passwort
hineinkommen
@Amalgovinus: Die Frage wurde ausgiebig bearbeitet, seit ich meine erste Antwort gepostet habe. Ich schätze, ich könnte diese Antwort löschen.
RedGrittyBrick
0

In Bezug auf den obigen Beitrag habe ich die Zeile geändert, obwohl ich das gleiche Problem hatte

PasswordAuthentication no

in der Datei / etc / ssh / sshd_config und es hat funktioniert.

Darüber hinaus ist es vielleicht besser zu verwenden

Dienst sshd Neustart

sshd Konfigurationsänderungen neu zu laden.

Nicolas
quelle
0

Eine andere Lösung für die SELinux-Funktion von Red Hat Enterprise Linux 6.5, mit der sshd daran gehindert wird, $ HOME / .ssh zu lesen, ist die Verwendung von restorecon. Den Antwortenden finden Sie hier: /superuser//a/764020/213743 .

buzz3791
quelle
0

Für mich war es so einfach wie

cat id_rsa.pub >> authorized_keys
user695025
quelle
0

Ich hatte das gleiche Problem, ich habe die folgenden 3 Schritte ausgeführt, um das Passwort abzüglich der Anmeldung zu erstellen, und es funktioniert einwandfrei

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
quelle