Ich habe ein Schlüsselpaar mit erstellt puttygen.exe
(Client ist Windows 8). Auf dem Server (Ubuntu 12.04.3 LTS) habe ich meinen öffentlichen Schlüssel eingegeben ~/.ssh/authorized_keys
. Der öffentliche Schlüssel lautet:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAopfM6RHOgnuc4Aftn3t4k5UIAT3StCAbn/vg/IMbphbXadshC+79sIlRq3P4zGzMjFTP4hKnzu6ehLV5lmj/qorq3SKT+bPO5Qrac3VbIlrGvuBFDDjP82I2Hwg3HzlsFTstqk++KToapaTYZ7jENEYyPl2wnzITJnt//+4U1o6juoXTKgdNE02hHnRZyHOV/bnkZyJJCEwJv5U0eXSThQnhmXtUxGT8U0HQNFiXfqIIVllhWiCnyrhhIaKz/CIJNAd2VmzyJzQtJtTQX8aWSNVrZju6Sv2/RncTNvsACdNgjjh/FH8PQXaep00jlJ3MOdsC8vz6VSPFbh6iKy1oLQ== rsa-key-20131231
Es ist also richtig (eine Zeile, keine Kommentare, beginnt mit ssh-rsa usw.)
.ssh
Die Berechtigungsstufe dir ist 700, die Berechtigung file_keys für autorisierte_keys ist 600. Sowohl das Verzeichnis als auch die Datei des tatsächlichen Benutzers, bei dem ich mich anmelden möchte.
Wenn ich versuche, eine Verbindung herzustellen, erhalte ich 'server refused our key'
und der Server fragt nach dem Passwort. Das ist alles. /var/log/auth.log
Beim Versuch, sich mit dem Schlüssel anzumelden, wird nichts angemeldet .
Ich habe überall gesucht und in allen Artikeln und Tipps wird erwähnt, dass chmod 600 und 700 für die Datei / das Verzeichnis eingestellt und der Schlüssel richtig formatiert wurden. Ich habe das alles getan und immer noch den Fehler "unseren Schlüssel abgelehnt" bekommen.
DEBUG
und prüfen Sie, ob protokollierte Probleme angezeigt werden. Wenn der Zugriff immer noch nicht angezeigt wird, suchen Sie in der falschen ProtokolldateiAntworten:
OK, in meinem Schlüssel war ein kleiner Tippfehler. Anscheinend wurde beim Einfügen in die Datei der erste Buchstabe abgeschnitten und es begann mit sh-rsa anstelle von ssh-rsa.
nrathathaus - Ihre Antwort war sehr hilfreich, vielen Dank, diese Antwort wird Ihnen gutgeschrieben :) Ich habe wie Sie gesagt und dies in sshd_conf gesetzt:
Beim Betrachten der Protokolle wurde mir klar, dass sshd den Schlüssel korrekt liest, ihn jedoch aufgrund der falschen Kennung ablehnt.
quelle
LogLevel
ist definiert in/etc/ssh/sshd_config
. Das Standardprotokoll ist,/var/log/auth.log
sofern in nicht anders definiertsshd_config
.i
) der führenden 's' wird nicht ausgeschnittensudo service ssh restart
damit die Änderungen wirksam werden. Ansonsten war nichts in meiner Auth-Log-Datei.Das Hinzufügen einiger Gedanken als andere Antworten half, war aber nicht genau passend.
Bearbeiten Sie zunächst, wie in der akzeptierten Antwort erwähnt,
und Protokollstufe einstellen:
Versuchen Sie dann, sich zu authentifizieren, und suchen Sie nach einer Protokolldatei, wenn dies fehlschlägt:
Es wird Fehler geben, nach denen Sie suchen.
quelle
/var/log/
existiert, existiert abersecure
nicht. Wie finde ich heraus, in welches Protokoll geschrieben wird?/var/log/auth.log
zumindest in meinem Ubuntu 14.04.1.secure
Datei gab, bevor ich @axel-Kommentare hier las.In meinem Fall musste ich auch die Berechtigungen von / home / user von 0755 auf 0700 ändern.
quelle
In meinem Fall liegt ein Berechtigungsproblem vor.
Ich habe die Protokollebene in geändert
DEBUG3
und in/var/log/secure
dieser Zeile wird Folgendes angezeigt:Googelte und ich fand diesen Beitrag:
https://www.daveperrett.com/articles/2010/09/14/ssh-authentication-refused/
Grundsätzlich sagt es mir:
w
Ihres Home-Verzeichnisses700
das.ssh
Verzeichnis600
für dieauthorized_keys
Datei.Und das funktioniert.
Eine andere Sache ist, dass ich selbst dann, wenn ich die Root-Anmeldung aktiviert habe, nicht
root
zur Arbeit kommen kann. Verwenden Sie besser einen anderen Benutzer.quelle
Unter Windows 8.1 stieß ich auf das
server refused our key
Problem.Befolgen Sie die Anleitung: https://winscp.net/eng/docs/guide_windows_openssh_server Es war einfach, eine Verbindung mit dem Windows-Login
username
und herzustellenpassword
. Bei der Authentifizierung mitusername
in Kombination mit aprivate key
war die Antwort jedochserver refused our key
.Um es mit einem öffentlichen Schlüssel zum Laufen zu bringen, kam es auf die Berechtigungen für die Datei an:
C:\ProgramData\ssh\administrators_authorized_keys
Dies ist eine hilfreiche Seite: https://github.com/PowerShell/Win32-OpenSSH/wiki/Troubleshooter-Steps
Stoppen Sie die beiden OpenSSH-Dienste und öffnen Sie einen
command prompt
mitadmin permissions
. Dann renne:C:\OpenSSH-Win32>c:\OpenSSH-Win32\sshd.exe -ddd
Hinweis: Geben Sie den vollständigen Pfad zur Exe an, andernfalls
sshd
beschweren Sie sich. Dadurch wird ein Verbindungslistener für die einmalige Verwendung erstellt. Das-ddd
ist ausführliche Stufe 3.Nach dem Herstellen einer Verbindung ergab das Scannen der Protokolle Folgendes:
Musste die Datei erstellen:
C:\ProgramData\ssh\administrators_authorized_keys
Und kopiere denpublic key
Text hinein, zB:ssh-rsa AAAA................MmpfXUCj rsa-key-20190505
Und dann speichere die Datei. Ich habe die Datei wieUTF-8
beim gespeichertBOM
. Nicht getestetANSI
.Führen Sie dann die einmalige Befehlszeile erneut aus. In den Protokollen wird Folgendes angezeigt:
S-1-5-11
ist der Name, der dem gegeben wirdSystem
.Um das zu beheben
Bad permissions
, klicken Sie mit der rechten Maustaste auf dieadministrators_authorized_keys
Datei, gehen Sie zuSecurity Tab
, klicken Sie auf dieAdvanced
Schaltfläche und entfernen Sie geerbte Berechtigungen. Löschen Sie dann alleGroup or user names:
außer dem Windows-Login-Benutzernamen, z. B.:YourMachineName\username
Die Berechtigungen dafürusername
sollten lautenRead Allow
,Write Deny
alles andere ist deaktiviert. Der Besitzer der Datei sollte auch seinYourMachineName\username
Dies hat das Problem behoben.
Andere nützliche Links:
Laden Sie OpenSSH-Win32.zip von folgender Adresse herunter: https://github.com/PowerShell/Win32-OpenSSH/releases
C # -Beispiel für die Verwendung der WinSCPnet.dll zum Herstellen einer Verbindung zum OpenSSH-Server: https://winscp.net/eng/docs/library#csharp
Hier ist das Code-Snippet zum Herstellen einer Verbindung mit
WinSCPnet.dll
:Ersetzen Sie
SshHostKeyFingerprint
undSshPrivateKeyPath
durch Ihre eigenen Werte.Bearbeiten: Screenshot der Dateiberechtigungen administrators_authorized_keys hinzugefügt:
Wenn
OpenSSH SSH Server
es als Dienst ausgeführt wird,System
sollte nur die Berechtigung vorhanden sein. Wenn Sie jedochsshd.exe
an der Eingabeaufforderung ausgeführt werden, sollte nur der aktuelle Benutzer aufgeführt sein (Leseerlaubnis, Schreibverweigerung).quelle
Ich füge diese Antwort hinzu, um allen wie mir zu helfen, die stundenlang erfolglos im Internet gesucht haben.
IHR ZUHAUSE ORDNER KANN VERSCHRIFTET WERDEN.
Oder für jeden Ordner, in dem Ihre Datei "authorized_keys" verschachtelt ist. Mann, das hätte mir viel Zeit gespart. Um dies zu überprüfen, führen Sie durch
in dem Verzeichnis, dessen Verschlüsselungsstatus Sie bestimmen möchten. Wenn der Ordner einen Ordner mit dem Namen ".encryptfs" enthält, lautet die Antwort: Ja, dieser Ordner ist verschlüsselt. Dies beeinträchtigt Ihren Zugriff auf die Datei "authorized_keys", die den zur Überprüfung erforderlichen öffentlichen SSH-Schlüssel enthält.
Um dies zu beheben, platzieren Sie die Datei "authorized_key" in einem Verzeichnisbaum, der keine Verschlüsselung enthält.
quelle
Die einfache Lösung, die ich gefunden habe, bestand darin, die
authorized_keys
Datei aus dem versteckten SSH-Verzeichnis zu verschieben und in das System-SSH-Verzeichnis zu legen:Sobald ich das tat, funktionierte es ohne Probleme.
quelle
Nachdem ich das gleiche Problem in Windows Server 2008 R2 hatte und viel zu lösen hatte, tat ich dies schließlich wie folgt:
Öffnen Sie C: \ Programme (x86) \ OpenSSH \ etc \ sshd_config mit einem Textpad oder einem anderen Texteditor
Entfernen Sie den Kommentar aus den folgenden Zeilen. Nach dem Entfernen sollten sie wie folgt aussehen:
Speichern Sie es und versuchen Sie, sich jetzt mit einem privaten Schlüssel anzumelden. habe Spaß.
quelle
Dank nrathaus und der
/var/log/auth.log
Untersuchung auf Debug-Ebene kommt Folgendes.Ein weiterer Grund ist, dass Ihr Home-Verzeichnis möglicherweise andere Berechtigungen als 755 hat.
quelle
Ich bin heute auf dieses Problem gestoßen, und mein Problem war, dass beim Kopieren des öffentlichen Schlüssels aus einer Datei auch neue Zeilenzeichen enthalten sind. Sie können ": set list" in vim verwenden, um alle versteckten neuen Zeilen anzuzeigen und sicherzustellen, dass alle neuen Zeilen mit Ausnahme der letzten gelöscht werden. Außerdem fehlte meinem Schlüssel am Anfang "ssh-rsa". Stellen Sie sicher, dass Sie das auch haben.
quelle
Für diejenigen, die diesen Fehler von Windows Server erhalten haben, habe ich denselben Fehler erhalten, und es handelte sich um ein Problem mit dem Benutzerkonto. In vielen Organisationen können Gruppenrichtlinien für Administratoren das Einrichten von SSH-Servern und -Verbindungen möglicherweise nicht zulassen. Bei dieser Art der Einrichtung muss dies über das lokale Administratorkonto erfolgen. Es könnte sich lohnen, einen Blick darauf zu werfen, wenn Sie bestätigt haben, dass der öffentliche Schlüssel keine Tippfehler enthält.
quelle
In meinem Fall musste ich SELinux unter Centos6.6 deaktivieren, damit es funktioniert :)
Bearbeiten Sie / etc / selinux / config, stellen Sie Folgendes ein und starten Sie den Host neu.
Übrigens ... habe vergessen zu erwähnen, dass ich LogLevel = DEBUG3 setzen musste, um das Problem zu identifizieren.
quelle
Ich hatte den gleichen Fehler unter Solaris, fand aber in /var/adm/splunk-auth.log Folgendes:
In / etc / shadow wurde das Konto gesperrt:
Der Teil "* LK *" wurde entfernt:
und ich könnte ssh wie gewohnt mit autorisierten_schlüsseln verwenden.
quelle
In meinem Fall wurde es verursacht durch (
/etc/ssh/sshd_config
):Geändert zu
yes
, den Dienst neu gestartet und normal eingestiegen.quelle
Ich habe dieses Problem gelöst. Puttygen ist eine Software von Drittanbietern. Der von ihm generierte SSH-Schlüssel wurde nicht direkt verwendet. Sie müssen daher einige Änderungen vornehmen. Zum Beispiel sieht es so aus
Ich lasse einige der Alphabete in der Mitte weg, ersetzt durch *. Wenn nicht, sagte mir StackOverflow, dass das Codeformat falsch ist. Lassen Sie mich nicht post posten
Dies ist mein SSH-Schlüssel, der von Puttygen generiert wurde. Sie müssen dies ändern
In meinem Fall habe ich einige Kommentare gelöscht, wie z
und
ssh-rsa
am Anfang hinzufügen,yourname@hostname
am letzten hinzufügen . Hinweis : Nicht==
im letzten löschen und Sie müssen "Ihr Name" und "Hostname" für Sie ändern. In meinem Fall istuaskh@mycomputer
Ihr Name, dass Sie sich bei Ihrem VPS anmelden möchten. Wenn all diese Dinge getan haben, können Sie öffentlich hochladen -Taste nach Hause uaskh die~/.ssh/authorized_keys
durchcat public-key >> ~/.ssh/authorized_keys
dannsudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys
dann müssen Sie ändern / etc / ssh / sshd_config,RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
mein Betriebssystem CentOS 7 ist, diese zu anwser Frage mein erstes Mal ist, werde ich meine Bemühungen zu tun versuchen, Thank you!quelle
Oh mein Gott, ich habe Tage damit verbracht, dies zu beheben. Also hier ist, was für mich funktioniert hat. Ich ging wie folgt zum Root-Fold zurück: cd / root / mkdir .ssh cd .ssh chmod 700 .ssh nano -w autorisierter_schlüssel service ssh restart Also habe ich root für die Protokollierung über Putty verwendet und es hat funktioniert. Versuchen Sie also, dasselbe mit dem Benutzer zu tun, den Sie in Putty verwenden möchten.
quelle
Ich verwende eine PUTTYgen-Datei mit psftp und bin auf meinem Windows Server auf dieses Problem gestoßen, als wir neue Schlüssel für einen Client erstellen mussten. Die .ppk- Datei private_key_name und die Datei open_ssh.txt müssen sich im selben Verzeichnis befinden, damit die Verbindung funktioniert.
quelle
In meinem Fall war das Haus auf NFS 777, musste 750 sein. Das hat das Problem behoben.
quelle
Ich habe dieses Problem, von dem sshd nur liest
authorized_keys2
.Das Kopieren oder Umbenennen der Datei hat das Problem für mich behoben.
PS Ich verwende Putty von Windows und verwende PuTTyKeygen für die Schlüsselpaargenerierung.
quelle
Beim Versuch, mich über Mobaxterm anzumelden, trat ein ähnliches Problem auf. Der private Schlüssel wurde durch Puttygen generiert. Das Regenerieren des Schlüssels hat in meinem Fall geholfen.
quelle
Bei Verwendung von Cpanel können Sie überprüfen, ob der Schlüssel in autorisiert ist
SSH-Zugriff >> Öffentliche Schlüssel >> Verwalten >> Autorisieren oder Deaktivieren.
quelle
wenn Sie diesen Fehler in bekommen
/var/log/secure
Dies bedeutet, dass Ihr Schlüssel über Speicherplatz verfügt. Wenn Sie beim Anzeigen der
.ppk
Datei einen Schlüssel über puttgen generiert haben , sieht dieser folgendermaßen aus:und wenn Sie versuchen, es einzufügen, wird beim Lesen des Schlüssels eine Fehlermeldung angezeigt. Versuchen Sie also, den Schlüssel zu bearbeiten, eine Zeile zu machen und es zu versuchen
das sollte wie etwas aussehen
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAoo3PFwX04NFG+rKz93l7em1BsUBzjHPMsswDal74MLaJyhQD0pE23NS1izahbo1sJGnSJu2VJ//zxidSsba6xa6OvmeiKTwCz0E5GMefdGVdpdbTlv99qjBl1+Nw1tDnHIC0+v9XmeZERQfCds9Kp1UivfReoYImntBCgLtNyqRYrSu8csJCt7E1oY8QK6WP1vfYgAQ2taGyS9+g7FHyyf5VY2vH3oWzzbqzxjsSLAv3zEQSm1LzSw9Pvc8iwasFyUMBOPj31CKQYTXyX8KpJTr0Zb7oqMauBE5LVwxZhlcJHbj0FsMbF/+GRjvgexymCi3bHmwGQ6FEADNd0RkhdQ== username@domainname
quelle
Was für mich funktioniert ist das:
Diesmal funktioniert es bei mir. Ich weiß jedoch nicht, warum meine Schlüsseldatei beim Start der Instanz zunächst nicht vorhanden ist. Überprüfen Sie auch diesen Link https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingMindTerm
quelle
In meinem Fall war das Problem so: Während der Generierung von SSH-Schlüsseln habe ich absichtlich die Standardverzeichnisse der Schlüssel geändert. Anstatt den von mir gewählten Speicherort ~ / .ssh / autorisierte_Tasten zu verwenden
~/home/user/folder1/.ssh/authorized_keys
, sollte ich , damit diese Änderungen funktionieren, dieselben Änderungen am neuen Speicherort in dieser Datei vornehmen/etc/ssh/sshd_config
. Aber bis ich700
das merke , habe ich bereits mehrere Lösungen ausprobiert, die von anderen Leuten hier vorgeschlagen wurden, einschließlich des Festlegens der Berechtigung des Home-Ordners auf und des .ssh-Verzeichnisses auf600
.quelle
Schritte zum Beheben des Root-Mount (dem ich gefolgt bin, als ich die Berechtigung mit dem ec2-Benutzerordner und der Autorisierungsschlüsseldatei geändert habe) Dieser Vorgang ähnelt dem Trennen und Anhängen eines USB-Sticks
Im Folgenden finden Sie einige andere Szenarien, denen Sie möglicherweise begegnen:
Schritte, um sie zu beheben
Nachdem Sie sich bei new ec2 angemeldet haben, führen Sie die folgenden Schritte aus
sudo mount /dev/mapper/rootvg-home /mnt
Jetzt haben wir unser Volumen mit dem Problem behoben, mit dem wir konfrontiert waren. Meistens kann es sich um ein Problem mit der Benutzerberechtigung handeln - Umount / mnt zum Aufheben der Bereitstellung - Gehen Sie jetzt zur Konsole und zeigen Sie auf das an die neue Instanz angehängte Volume und trennen Sie es. - Fügen Sie es nach dem Trennen als / dev / sda1 an Ihr neues Volume an
Wenn dies gesagt ist, sollten Sie sich erfolgreich anmelden können
quelle
Nach meiner Erfahrung sollten Sie Schlüssel aus Kitt generieren, nicht aus Linux. Weil der Schlüssel das alte PEM-Format sein wird. Jedenfalls nur mein Vorschlag. Ich habe die folgenden Schritte ausgeführt und gut mit mir und meinem Team zusammengearbeitet.
Generieren Sie ein Schlüsselpaar mit PuTTYGen.exe auf Ihrem lokalen Server (Typ: RSA, Länge: 2048 Bit).
Speichern Sie den privaten / öffentlichen Schlüssel als " id_rsa.ppk / id_rsa.pub " -Dateien auf Ihrem lokalen Server .
Erstellen Sie eine Datei mit " autorisierten Schlüsseln" in Ihrem lokalen Verzeichnis und geben Sie den öffentlichen Schlüssel in " id_rsa.pub " in " autorisierte Schlüssel " ein. Denken Sie daran, dass der Inhalt mit " ssh-rsa " und nur einer Zeile beginnen muss .
Führen Sie die folgenden Befehle aus:
chmod 700 .ssh
chmod 600 .ssh / autorisierte_Tasten
chown $ USER: $ USER .ssh -R
Testen Sie Ihre Verbindungseinstellung, indem Sie den privaten Schlüssel " id_rsa.ppk " in das PuTTY.exe-Profil laden und dann auf " Öffnen " klicken (geben Sie gegebenenfalls Ihre Passphrase ein).
quelle
Überprüfen Sie Ihren Schlüssel. Dies sollte heute ein rsa-Schlüssel (id_rsa.pub) und kein dss-Schlüssel (id_dsa.pub) mehr sein. Verwenden Sie puttygen 0.70 und wählen Sie RSA für den zu generierenden Schlüsseltyp. Ersetzen Sie den öffentlichen Schlüssel auf Host ~ /. ssh / autorisierte_Tasten
quelle
Melden
ec2-user
Sie sich nach dem Hinzufügen des Schlüssels so an, als ob Sie einen Amazon Linux-Computer verwendenquelle
Ein weiterer Grund könnte die UTF-8-Stückliste in der
authorized_keys
Datei sein.quelle