Seltsames Verhalten bei der Anmeldung mit öffentlichen SSH-Schlüsseln

541
Rob360

Ich stecke hier wirklich fest. Ich habe versucht, von einem lokalen mit einem öffentlichen Schlüssel in meinen ec2-Server zu ssh, aber es funktioniert nicht. -> Ich bekomme die Erlaubnis verweigert (öffentlicher Schlüssel).

Das Setup ist wie folgt: Local: Generiertes öffentliches Schlüsselpaar und kopierter Inhalt von id_rsa.pub. Remote: ssh-ed mit der PEM-Datei in meinen EC2-Server und fügte den Inhalt von id_rsa.pub in die neue Zeile der Datei mit den autorisierten Schlüsseln im .ssh-Ordner ein.

Sollte richtig funktionieren? Ich habe bemerkt, dass ein häufiger Fehler Berechtigungen sind, aber meine scheinen richtig eingestellt zu sein:

Remote-Berechtigungen:

drwx------ 2 ec2-user ec2-user 4096 Jul 23 04:00 .ssh 

und in .ssh:

-rw-r--r-- 1 ec2-user ec2-user 404 Jul 24 03:19 id_rsa.pub -rw------- 1 ec2-user ec2-user 1679 Jul 24 03:19 id_rsa -rw------- 1 ec2-user ec2-user 529 Jul 26 20:53 authorized_keys 

Lokal:

drwx------ 10 robvanhaaren staff 340 Jul 26 18:43 .ssh 

und in .ssh:

-rw-r--r-- 1 robvanhaaren staff 404 Jul 26 21:28 id_rsa.pub -rw------- 1 robvanhaaren staff 1766 Jul 26 21:28 id_rsa -rw-r--r-- 1 robvanhaaren staff 5987 Jul 26 21:29 known_hosts 

Aber wenn ich renne:

Robs-MacBook-Air-2:.ssh robvanhaaren$ ssh ec2-54-85-62-99.compute-1.amazonaws.com -l ec2-user -v 

es gibt zurück:

OpenSSH_5.9p1, OpenSSL 0.9.8y 5 Feb 2013 debug1: Reading configuration data /etc/ssh_config debug1: /etc/ssh_config line 20: Applying options for * debug1: Connecting to ec2-54-85-62-99.compute-1.amazonaws.com [54.85.62.99] port 22. debug1: Connection established. debug1: identity file /Users/robvanhaaren/.ssh/id_rsa type 1 debug1: identity file /Users/robvanhaaren/.ssh/id_rsa-cert type -1 debug1: identity file /Users/robvanhaaren/.ssh/id_dsa type -1 debug1: identity file /Users/robvanhaaren/.ssh/id_dsa-cert type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_6.2 debug1: match: OpenSSH_6.2 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.9 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 none debug1: kex: client->server aes128-ctr hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Server host key: RSA 7a:d3:6c:7f:64:5d:b1:7b:2e:bb:73:0c:ce:0c:17:77 debug1: Host 'ec2-54-85-62-99.compute-1.amazonaws.com' is known and matches the RSA host key. debug1: Found key in /Users/robvanhaaren/.ssh/known_hosts:15 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Offering RSA public key: /Users/robvanhaaren/.ssh/id_rsa debug1: Authentications that can continue: publickey debug1: Trying private key: /Users/robvanhaaren/.ssh/id_dsa debug1: No more authentication methods to try. Permission denied (publickey). 

Das Seltsame ist, dass ich mich mit einem öffentlichen Schlüssel von meinem anderen ec2-Server beim Server anmelden kann. Das Problem scheint also auf meinem lokalen Rechner zu liegen, nicht auf der Fernbedienung.

Bitte helfen

2
Haben Sie `/ var / log / auth.log` überprüft? Gibt es relevante Protokolle? Valmiky Arquissandas vor 10 Jahren 1
Verwenden Sie denselben Schlüssel, um sich von Ihrem anderen ec2-Server aus anzumelden? heavyd vor 10 Jahren 0
Vielleicht haben Sie Authorized_keys nicht ordnungsgemäß hinzugefügt. ssh-copy-id kann dies automatisch tun. Aktivieren Sie zuerst user / pass login, dh `PasswordAuthentication yes` in sshd_config, und Sie können dann` ssh-copy-id user @ host` verwenden. Dann wird es automatisch zu Authorized_keys hinzugefügt, und beim nächsten Mal wird der Schlüssel verwendet off user / pass login wenn du willst barlop vor 9 Jahren 2

2 Antworten auf die Frage

2
Alex Atkinson

SSH-Probleme können mühsam sein. Ich fange immer mit dem folgenden an. Ich habe die Befehle in einem Spickzettel gespeichert, sodass ich mich vor Typos nie fürchten muss.

chmod 700 ~/.ssh && chmod 600 ~/.ssh/* \ && chmod 644 ~/.ssh/authorized_keys \ && chown -r <username>:<username> /home/<username>/.ssh \ && chown -r <username>:<username> /home/<username>/.ssh/* 

Wenn dies nicht funktioniert, würde ich authorized_keys entfernen und neu erstellen (unter Beachtung des Besitzes und der Berechtigungen) und dabei sicherstellen, dass der Inhalt aus dem Editor oder einem anderen geeigneten Texteditor kopiert wird. Wordpad und andere fette Editoren können Schlüssel verwirren. Sie können den Eintrag des Remote-Hosts auch aus der Datei known_hosts entfernen. Ich erinnere mich, dass ich das einmal für etwas tun musste.

Sie schreiben "Wenn das nicht funktioniert, würde ich authorised_ entfernen" <- Sie meinen Authorized_keys barlop vor 9 Jahren 0
Ja, Authorized_keys ^ _ ^ (Bearbeitung) Alex Atkinson vor 9 Jahren 0
Es sieht so aus, als hätten die Dateien authorized_keys und id_rsa.pub unterschiedliche Größen - ich denke, das ist das Problem hier. Jacob Hume vor 9 Jahren 0
@JacobHume sollten Sie diese Aussage näher erläutern, da authorisierte_Keys möglicherweise id_rsa.pub und mehr haben barlop vor 9 Jahren 0
Sie schreiben "Sie können auch den Eintrag des Remote-Hosts aus der Datei known_hosts entfernen" <- oder die Datei known_hosts entfernt. Obwohl das known_hosts-Problem nicht das Problem in seiner Frage ist. Das known_hosts-Problem ist ein anderer Fehler, wenn sich ein Schlüssel ändert. barlop vor 9 Jahren 0
@barlop Die Informationen in Ihrer id_rsa.pub-Datei werden den berechtigten Schlüsseln auf dem Remote-Computer hinzugefügt, wodurch die Vertrauensstellung für dieses Schlüsselpaar festgelegt wird. Da die Dateigrößen unterschiedlich sind, wurde möglicherweise der öffentliche Schlüssel (id_rsa.pub) nicht korrekt kopiert. Jacob Hume vor 9 Jahren 0
@JacobHume Ich bin mir dessen bewusst, dass id_rsa.pub authorized_keys hinzugefügt wird. Was ich Ihnen gesagt habe war, dass keys_keys id_rsa.pub ** und mehr ** haben könnte. Wenn also mehr vorhanden wäre, wären die Dateigrößen nicht gleich. authorised_keys wäre größer und das würde nicht unbedingt bedeuten, dass ein Fehler gemacht wurde. Deswegen müssen Sie das, was Sie meinen, näher erläutern. barlop vor 9 Jahren 0
1
Overbryd

Stellen Sie sicher, dass Sie die /var/log/auth.logAngaben im Kommentar überprüfen . Fast immer finden Sie dort Ihre Antwort.

Ich habe diese Berechtigungen für meine Server und lokal festgelegt:

Server

drwx------ remoteuser group ~/.ssh -rw------- remoteuser group ~/.ssh/authorized_keys 

Örtlich

drwx------ user group ~/.ssh -rw------- user group ~/.ssh/id_rsa -rw----r-- user group ~/.ssh/id_rsa.pub 
Warum können Ihre `authorised_keys'-Dateien aus Neugier anderen lesbar sein? Soll die Datei `approved_keys 'nicht 600 sein? JW0914 vor 6 Jahren 0
Guter Fang. Dies ist eine wirklich alte Antwort, und ich sollte sie wahrscheinlich bearbeiten. Overbryd vor 6 Jahren 0