Ich versuche, eine Verbindung zu einem Linode (unter Ubuntu 12.04 LTS) von meinem lokalen Computer (unter Ubuntu 12.04 LTS) herzustellen.
Ich habe auf meinem lokalen Computer einen privaten und einen öffentlichen Schlüssel erstellt und meinen öffentlichen Schlüssel in die authorized_keys-Datei von Linode kopiert. Wenn ich jedoch versuche, auf meinen Linode zu sshen, wird die Fehlermeldung angezeigt Permission denied (publickey)
.
Es ist kein Problem, wie ssh auf meinem Linode eingerichtet ist, da ich mithilfe der Schlüsselauthentifizierung von meinem Windows-Computer auf ssh zugreifen kann.
In meinem .ssh
Verzeichnis auf meinem lokalen Ubuntu-Rechner habe ich meine id_rsa
und id_rsa.pub
Dateien. Muss ich eine authorized_keys-Datei auf meinem lokalen Computer erstellen?
EDIT: Das bekomme ich, wenn ich renne ssh -vvv -i id_rsa [youruser]@[yourLinode]
:
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
quelle
/var/log/auth.log
) 2) Wie haben Sie den öffentlichen Schlüssel auf den Server übertragen? Verwenden Sie immer,ssh-copy-id
um sich über Berechtigungen zu vergewissern. Ihr Ausgangsverzeichnis, das.ssh
Verzeichnis und dieauthorized_keys
Datei unterliegen strengen Berechtigungsanforderungen. (siehe manpage vonsshd
(8) auf~/.ssh/authorized_keys
). 3) Haben Sie unter Ubuntu ein neues Schlüsselpaar generiert? Falls Sie den Schlüssel von Windows aus wiederverwendet haben, müssen Sie ihn zuerst in das OpenSSH-Format konvertieren.ssh -vvv -i .ssh/id_rsa ....
(beachten Sie den Pfad id_rsa!) - bitte ersetzen - das alte Protokoll zeigt nur , dass „wir“ keine pubkey hatte zu senden.Antworten:
PubKeyAuthentication
Richten Sie Ihren Client ein
ssh-keygen
vim ~/.ssh/config
ssh-copy-id -i /path/to/key.pub SERVERNAME
Ihre Konfigurationsdatei aus Schritt 2 sollte ungefähr so aussehen :
Sie können hinzufügen,
IdentitiesOnly yes
um sicherzustellen, dassssh
dieIdentityFile
und keine anderen Schlüsseldateien während der Authentifizierung verwendet werden . Dies kann Probleme verursachen und ist keine gute Vorgehensweise.Fehlerbehebung
tail -f /var/log/auth.log
(auf dem Server) und überwachen Sie Fehler, wenn Sie versuchen, sich anzumeldenIdentitiesOnly yes
, die Authentifizierung auf den einzelnen angegebenen Schlüssel zu beschränken.quelle
IdentityFile
Zeile in ~ / .ssh / config muss auf den PRIVATEN Schlüssel verweisen.Manchmal liegt das Problem an Berechtigungen und Inhabern. Zum Beispiel möchten , wenn Sie als root anmelden,
/root
,.ssh
undauthorized_keys
muss root gehören. Andernfalls kann sshd sie nicht lesen und daher nicht feststellen, ob der Benutzer berechtigt ist, sich anzumelden.In Ihrem Heimatverzeichnis:
Bezüglich der Rechte gehen Sie mit 700 für
.ssh
und 600 fürauthorized_keys
quelle
authorized_keys
Datei aus meinem verschlüsselten Home-Verzeichnis verschoben . Dabei hatte ich versehentlich den Besitzer gewechseltroot:root
.Sie brauchen nicht
authorized_keys
auf Ihrem Client.Sie müssen den ssh-client anweisen, den von Ihnen generierten Schlüssel tatsächlich zu verwenden. Dafür gibt es verschiedene Möglichkeiten. Nur zum Testen von Typ
ssh -vvv -i .ssh/id_rsa [youruser]@[yourLinode]
. Sie müssen Ihre Passphrase jedes Mal eingeben, wenn Sie eine Verbindung zum Server herstellen möchten.Wenn das geklappt hat, können Sie den Schlüssel dem
ssh-agent
mit hinzufügenssh-add .ssh/id_rsa
(Sie müssen die Passphrase nur einmal eingeben und sie sollte funktionieren, solange Sie sich nicht abmelden / neu starten).quelle
~/.ssh/id_rsa
. Auch die Verwendung eines Schlüsselagenten ist völlig optional und hat meines Erachtens nichts mit dem Problem zu tun.Überprüfen Sie auch den Wert von
PasswordAuthentication
in/etc/ssh/sshd_config
undno
ändern Sie ihn inyes
. Vergessen Sie nicht, den ssh-Dienst danach neu zu starten.quelle
Das Problem, das ich hatte, war die Verwendung der falschen Schlüssel auf dem Client. Ich hatte id_rsa und id_rsa.pub in etwas anderes umbenannt. Sie können sie entweder wieder in die Standardeinstellung umbenennen oder den Befehl ssh folgendermaßen verwenden
quelle
Stellen Sie außerdem sicher, dass das Home-Verzeichnis des Benutzers (auf dem Server) tatsächlich zu dem Benutzer gehört, in den ssh'ing (in meinem Fall root: root).
Gewesen sein sollte:
quelle
Ich bin kürzlich mit meinem Webserver auf dieses Problem gestoßen.
Normalerweise behalte ich eine Liste der autorisierten Schlüssel auf allen meinen Servern in
~/.ssh/authorized_keys2
. Aus meiner Erfahrungsshd
wird gesucht~/.ssh/authorized_keys
oder~/.ssh/authorized_keys2
standardmäßig.Bei meinem Webserver hatte der
/etc/ssh/sshd_config
diese LeitungAnstatt von
Ich habe letzteres angewendet, meinen ssh-Daemon neu gestartet und mein Problem beim Anmelden mit ssh mit meinem Pubkey gelöst.
quelle
Eine weitere mögliche Ursache könnte bei der
AllowedUsers
Konfiguration in liegen/etc/ssh/sshd_conf
. HINWEIS: Die Liste ist durch Leerzeichen (nicht durch Kommas) getrennt, wie ich auf die harte Tour gelernt habe.quelle
Wenn alles andere fehlschlägt, überprüfen Sie, ob Ihr angemeldeter Benutzer zur AllowedGroup von ssh gehört. Das heißt, Ihre Benutzer sind Mitglied der Gruppe, die in der folgenden Zeile
/etc/ssh/sshd_config
auf dem Server angezeigt wird :quelle
Ich mein Fall, der Client ist Ubuntu 14.04lts, der Server war Win 2012 Server mit Cygwin. Ich habe 'ssh administrator @ xxxx' verwendet, als das 2012-Serververzeichnis in cygwin / home / Administrator lautete. Wenn ich 'ssh Administrator @ xxxx' ausprobierte (beachte die Groß- und Kleinschreibung von A auf Administrator), funktionierte dies einwandfrei.
Eine Fehlermeldung wie "Benutzer nicht gefunden" hätte mich viel schneller zur Lösung geführt als "Berechtigung verweigert (öffentlich, tastaturinteraktiv)".
quelle
Ich hatte das gleiche Problem beim Kopieren des öffentlichen Schlüssels eines regulären Benutzers (z. B. johndoe) von einem cPanel Centos-System auf einen Ubuntu-Server unter AWS. Wie oben von gertvdijk vorgeschlagen , habe ich es überprüft
/var/log/auth.log
und es stand festAuthentication refused: bad ownership or modes for directory /home/johndoe
. Es stellte sich heraus, dass ich zu Unrecht/home/johndoe
versucht hatte,/home/johndoe/public_html
das virtuelle Dokument als Standard-Stammverzeichnis für Apache2 festzulegen (dies wird auch für diese Aufgabe nicht benötigt).Siehe auch die Antworten hier und hier
Auf dem Server muss nur der öffentliche Schlüssel
.ssh/authorized_keys
und auf dem Client (auf dem Sie arbeiten) der private Schlüssel (.pem oder bei Verwendung von SFTP mit Filezilla, .ppk) vorhanden sein.quelle
Für diejenigen Putty-Benutzer wie mich, die zu diesem Thread gekommen sind, kann dieser Fehler auch auftreten, wenn Sie vergessen haben, den Benutzer user @ Ip!
Andere mit Erlaubnis für Schlüsseldatei (chmod bis 600)
quelle
Das hat bei mir funktioniert, das Update ist nicht meins, aber ich würde es lieber hier aufschreiben, falls jemand anderes das gleiche Problem hat.
Der ursprüngliche Autor hat es hier gepostet: digital-ocean-public-access-key-denied
Ersetzen Sie diese
Mit diesem
Speichern Sie die Datei und starten Sie ssh neu
ssh sollte jetzt funktionieren und nach einem Passwort fragen
quelle
Ich hatte das gleiche Problem wie in der Frage beschrieben. Die Ausgabe der Ausführung
ssh -vvv -i id_rsa [youruser]@[yourLinode]
auf dem Client-Computer war ähnlich der in der Frage beschriebenen. Ich habe alle Datei- und Verzeichnisberechtigungen überprüft, wie in den anderen Antworten angegeben, und sie waren korrekt.Es stellte sich heraus , dass , wenn die erzeugte Datei kopieren
id_rsa.pub
auf dem Server - Rechner, als Datei~username/.ssh/authorized_keys
, würde ich versehentlich das Wort verzichtetssh-rsa
von Anfang an . Das Hinzufügen löste das Problem.quelle
Funktioniert auch unter Ubuntu 16.04.
Das Problem ist in der
sshd_config
DateiHier ist die ultimative Lösung:
Melden Sie sich als root bei Ihrem Ubuntu-Server an
Gehen Sie jetzt ganz nach unten und ändern Sie den Wert von "no" in "yes".
Es sollte so aussehen:
Ändern Sie den Wert in no, um getunnelte Klartextkennwörter zu deaktivieren
in Kraft treten.
Jetzt können Sie einfach einen Schlüssel mit folgendem Befehl von Ihrem LOKALEN Computer (auch bekannt als Laptop usw.) eingeben.
Öffnen Sie also ein neues Terminalfenster und melden Sie sich NICHT beim Server an. Geben Sie einfach den folgenden Befehl ein:
ssh-copy-id john @ serverIPAddress
(Ersetzen Sie John durch Ihren Benutzernamen).
Du solltest gehen, um zu gehen
quelle
Einige Leute, die sich fragen, haben möglicherweise den ssh-Zugang so eingerichtet, dass er nur auf dem Root-Konto als Schlüssel fungiert
ssh root@your-ip-address
rsync --archive --chown=[user]:[user] ~/.ssh /home/[user]
logout
Dann versuche es nochmal. Ersetzen Sie [Benutzer] durch Ihr neues Benutzerkonto.
Dies ist häufig der Fall, wenn Sie einen neuen Server auf DigitalOcean einrichten, während Sie beim Setup ssh-keys verwendet haben.
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04
quelle
In meinem Fall wurde das Problem durch das Kopieren eines
.ssh
Verzeichnisses von einem älteren Computer verursacht. Es stellt sich heraus, dass meine ältere SSH-Konfiguration DSA-Schlüssel verwendet hat, die inzwischen veraltet sind . Der Wechsel zu einem neuen Schlüsselpaar, diesmal RSA-basiert, löste das Problem für mich.quelle
Die folgende Methode funktioniert möglicherweise, wenn Sie unabhängig (z. B. von ComputerC) auf ComputerA und ComputerB zugreifen können.
Wenn ssh-copy-id nicht funktioniert, kann die Kennwortauthentifizierung deaktiviert werden. Das Folgende ist eine Problemumgehung .
Wenn der öffentliche Schlüssel von Maschine A in den autorisierten Schlüsseln von Maschine B enthalten ist (z. B. ~ / .ssh / authorized_keys), können Sie von Maschine A aus ssh ausführen. Dies gilt auch für scp.
Nach dem Generieren der Schlüsselpaare mit:
ssh-keygen
Auf Maschine A ausführen
cat ~/.ssh/id_rsa.pub
Beispielausgabe:
Kopieren Sie den gedruckten Schlüssel ( ⌘ Command+ Coder CRTL+ C) und fügen Sie ihn in die Datei ~ / .ssh / authorized_keys auf Maschine B ein .
Führen Sie beispielsweise Folgendes auf Maschine B aus :
quelle