Frage Wie kann ich eine passwortlose SSH-Anmeldung einrichten?


Ich möchte in der Lage sein, mich über ssh bei einer Remote anzumelden, ohne das Passwort ständig eingeben zu müssen.

  • Wie richte ich es ein?
  • Ist ein anderer Befehl erforderlich, um eine Sitzung ohne Passwort auszuführen?

226
2018-06-04 17:24


Ursprung


Verwenden Sie openssh? (wenn das so ist, einfach;)) - Rinzwind
@Rinzwind, Warum sollte ich mir die proprietäre Version besorgen, wenn OpenSSH bereits vorinstalliert ist? - Oxwivi
Ich versuche keine Assuptionen zu machen;) - Rinzwind
Beachten Sie, dass dies als eine schlechte Sicherheitsvorkehrung angesehen wird, und einige Distributionen deaktivieren es aus der Box. Ich bin mir nicht sicher, aber es ist möglich, dass Sie aktivieren müssen PermitRootLogin im /etc/ssh/sshd_config um das funktionieren zu lassen. - Kevin
@ Kevin, bitte erkläre dich selbst. Wir sprechen über ssh-ing ohne Passwort, das ist in der Regel ein gute Übung. Meinst du damit, in eine Root-Shell zu gehen? Das ist von dieser Frage nicht abgedeckt. - Oxwivi


Antworten:


Antworten

Führe diese Befehle aus:

ssh-keygen

Dann müssen Sie den neuen Schlüssel auf Ihren Server kopieren:

ssh-copy-id user@host
## or if your server uses custom port no:
ssh-copy-id "user@host -p 1234"

Nachdem der Schlüssel kopiert wurde, ssh wie gewohnt in den Computer:

ssh user@host

Sie können sich jetzt anmelden, ohne ein Passwort von der Maschine einzugeben, auf der Sie die Befehle ausgeführt haben.

Beispiel

not-marco@rinzwind-desktop:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/not-marco/.ssh/id_rsa): 
Created directory '/home/not-marco/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/not-marco/.ssh/id_rsa.
Your public key has been saved in /home/not-marco/.ssh/id_rsa.pub.
The key fingerprint is:
b1:25:04:21:1a:38:73:38:3c:e9:e4:5b:81:e9:ac:0f not-marco@rinzwind-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|.o= . oo.        |
|*B.+ . .         |
|*=o .   o .      |
| = .     =       |
|. o     S        |
|E.               |
| o               |
|  .              |
|                 |
+-----------------+

not-marco@rinzwind-desktop:~$ ssh-copy-id not-marco@server
not-marco@server's password: 
Now try logging into the machine, with "ssh 'not-marco@server'", and check in:

  ~/.ssh/authorized_keys

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

Erläuterung

Dies setzt voraus, dass Sie bereits eine Verbindung zu Ihrem Server über SSH herstellen können.

Sie müssen ein SSH-Schlüsselpaar erstellen, mit dem Sie sich ohne Passwort identifizieren können. Sie können entscheiden, Schlüssel mit einem Passwort zu schützen, wenn Sie möchten, aber dies kann leer gelassen werden, so dass Sie ohne Passwort SSH-Zugang haben.

  1. Erstellen Sie zunächst Ihr SSH-Schlüsselpaar, indem Sie es ausführen ssh-keygen Dies wird ein erstellen id_rsa und id_rsa.pub Datei. Das pub Datei ist, was auf den Servern geht, der private Schlüssel (id_rsa) ist was bei dir bleibt und wie du dich identifizierst.
  2. Als nächstes kopieren Sie den öffentlichen Schlüssel auf Ihren Server mit ssh-copy-id user@server Ersetzen Sie Benutzer mit Ihrem Remote-Benutzer und Server durch den DNS-Namen oder die IP-Adresse des Computers. Es wird nach Ihrem SSH-Passwort gefragt, geben Sie es ein und wenn alles erfolgreich abgeschlossen ist, können Sie auf das Gerät zugreifen ssh user@server ohne ein Passwort zu benötigen.

Verweise


231
2018-06-04 17:36



@Oxwivi diese Antwort ist der richtige Weg, es zu tun - aber es scheint länger. Alles, was Sie tun müssen, ist tippen ssh-keygen Befolgen Sie die Anweisungen auf dem Bildschirm und geben Sie ein ssh-copy-id user@server Ersetzen Sie Benutzer durch Ihren Remote-Benutzer und Server mit dem Remote-Computer - Marco Ceppi♦
Ich hatte diesen Fehler "Der Agent gab zu, dass er mit dem Schlüssel nicht unterschrieben hat." jedes Mal, wenn Sie versuchen, sich einzuloggen, nachdem Sie dieses Verfahren ausgeführt haben. Die Lösung war, "> ssh-add" auf dem lokalen Rechner auszuführen und jetzt kann ich mich wie erwartet auf dem entfernten Rechner einloggen. - jmbouffard
Es ist erwähnenswert, dass Sie, wenn Sie den benutzerdefinierten Port für @server verwenden müssen, dies tun müssen mit: ssh-copy-id "not-marco@127.0.0.1 -p 1234". - s3m3n
@Rinzwind: Bedeutet dies, dass ich mich nie von einem unbekannten Client / Rechner zu meinem Server authentifizieren kann, wenn ich die passwd-Authentifizierung deaktiviere und nur die Schlüsselauthentifizierung zulasse. Gibt es eine Möglichkeit, die Anmeldung von einem unbekannten Computer mit dem privaten Schlüssel zu ermöglichen, der für den bekannten / konfigurierten Client zur Kommunikation mit dem Server generiert wurde? Ich meine, ist dieser private Schlüssel tragbar und könnte verwendet werden, um mich von anderen Maschinen zum Server zu authentifizieren, im Notfall? - Rajat Gupta
Aber der Server fragt immer noch nach dem Passwort ,,, - lerner


Geben Sie die folgenden Befehle ein:

  1. ssh-keygen 

    Drücken Sie Eingeben drücken, bis Sie die Eingabeaufforderung erhalten

  2. ssh-copy-id -i root@ip_address

    (Es wird einmal nach dem Passwort des Host-Systems fragen)

  3. ssh root@ip_address

Jetzt sollten Sie sich ohne Passwort einloggen können.


30
2018-05-17 08:45





Die Art, wie ich das normalerweise mache, ist wie folgt:

ssh-keygen -t rsa

(Wenn Sie nach einem Passwort gefragt werden, lassen Sie es leer)

Dann: cat ~/.ssh/id_rsa.pub | ssh username@hostname 'cat >> .ssh/authorized_keys'

(Dazu muss der Ordner ".ssh" im Ausgangsverzeichnis des Zielhostnamens mit der Datei "authorized_keys" enthalten sein.)

Ersetzen Sie den Benutzernamen natürlich durch den gewünschten Benutzernamen und den Hostnamen durch den gewünschten Hostnamen oder die IP-Adresse

Danach, nur SSH zu dieser Box, wie Sie es gewohnt sind.


21
2018-06-04 18:22



Was ist mit touch und chmod Befehl in Rinzwinds Antwort? - Oxwivi
Sie müssen chmod die .ssh/authorized_keys Datei auf 0600 oder das wird nicht funktionieren - Marco Ceppi♦
Das hat mir sehr geholfen, weil ich die ssh-copy-id nicht für root auf meinem Server bekommen konnte. Es muss root sein, wenn backuppc (oder ein anderer Daemon) auf einen anderen Rechner zugreifen muss. - Adam


Ich benutze normalerweise sshpass Dafür installieren Sie es mit sudo apt-get install sshpass und benutze es so

sshpass -p 'password' ssh your_username@your_server

18
2017-12-06 17:26



Warum nicht ssh-Schlüssel verwenden? - enzotib
Es ist keine "warum nicht" -Situation, es funktioniert immer noch perfekt ohne Schlüssel hinzuzufügen, es ist nur eine andere Methode, die ich sagen würde. - Bruno Pereira
Danke für die Informationen auf sshpass, habe noch nie davon gehört. - Panther
SSH-Schlüssel sind die "richtige" Antwort auf die Frage, aber sshpass ist ein sehr nützlicher Hack in Fällen, in denen Sie die Authentifizierungsmethode auf dem Remote-Server nicht ändern können! - Jacob Krall
Dies ist sehr gefährlich, Sie werden in bash_history oder was auch immer die einfachen Kennwörter für die Hosts halten, mit denen Sie sich verbinden. - kappa


Diese Lösung ist speziell für Benutzer geeignet Windows zu ssh in ihre Remote-Maschinen einschließlich Cloud-Images auf AWS-Cloud und GCE Wolke


9
2017-11-20 09:07





Deaktivieren Sie die Kennwortauthentifizierung

Weil viele Leute mit SSH-Servern schwache Passwörter verwenden, viele   Online-Angreifer suchen nach einem SSH-Server und beginnen dann zu raten   Passwörter nach dem Zufallsprinzip. Ein Angreifer kann Tausende von Kennwörtern in einem versuchen   Stunde, und rate sogar das stärkste Passwort genug Zeit gegeben. Das   Empfohlene Lösung ist die Verwendung von SSH-Schlüsseln anstelle von Passwörtern. So zu sein   schwer zu erraten, wie ein normaler SSH-Schlüssel, ein Passwort müsste enthalten   634 zufällige Buchstaben und Zahlen. Wenn Sie sich immer einloggen können   Ihr Computer mit einem SSH-Schlüssel, sollten Sie das Passwort deaktivieren   Authentifizierung insgesamt.

Wenn Sie die Passwort-Authentifizierung deaktivieren, ist dies nur möglich   verbinden Sie von Computern, die Sie speziell genehmigt haben. Dies massiv   verbessert Ihre Sicherheit, macht es Ihnen jedoch unmöglich, eine Verbindung herzustellen   Ihren eigenen Computer von einem Freund PC ohne Vorabgenehmigung des PC, oder   von Ihrem eigenen Laptop, wenn Sie versehentlich Ihren Schlüssel löschen.

Es wird empfohlen, die Passwort-Authentifizierung zu deaktivieren, es sei denn, Sie haben eine   spezifischer Grund nicht zu.

Um die Kennwortauthentifizierung zu deaktivieren, suchen Sie nach der folgenden Zeile   Ihre sshd_config-Datei:

#PasswordAuthentication yes

Ersetzen Sie es durch eine Zeile, die folgendermaßen aussieht:

PasswordAuthentication no

Sobald Sie die Datei gespeichert und Ihren SSH-Server neu gestartet haben, können Sie   sollte nicht einmal nach einem Passwort gefragt werden, wenn Sie sich einloggen.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication


7
2018-02-15 01:10



Dies ist die grundlegend richtige Antwort, aber gut für die Sicherheit! Deaktivieren Sie auch Root-Login ist ein weiterer guter - FreeSoftwareServers
Tut PasswordAuthentication no Auswirkungen auf alle Benutzer? Wenn nicht, wie schalte ich es für normale Benutzer aus, aber lasse es unverändert für root, während ich es teste? Ich will es nicht wirklich tun und mich komplett aussperren. - Adam
Lassen Sie eine SSH-Sitzung geöffnet, damit Sie sie wieder ändern können. Sie möchten Kennwörter UND root deaktivieren. Ja, Sie können es fubar. Nicht;) - Thufir
Während ssh habe ich einen Fehler Permission denied (publickey). mit PasswordAuthentication no. Was soll ich tun? Ändere ich PasswordAuthentication no auf einem anderen Host? - ParisaN


Wenn Sie ein öffentliches / wichtiges Schlüsselpaar erstellen und sich mit unserem neu erstellten öffentlichen Schlüssel anmelden, müssen Sie Ihr Kennwort nicht eingeben. Abhängig von der Konfiguration Ihres Schlüsselbund- und / oder SSH-Agenten müssen Sie Ihren Schlüssel möglicherweise mit einer Passphrase schützen.

Hier ist einer von vielen kurze Anleitungs für dich. Für die Sicherheit dieser Methode ist es von entscheidender Bedeutung, dass der generierte private Schlüssel privat bleibt! Sie sollten es niemals mit irgendjemandem teilen oder den Zugriff darauf in irgendeiner Weise erlauben.

Dieser Befehl erzeugt einen einigermaßen starken Schlüssel ~/.ssh/:

ssh-keygen -b 4096

Im ~/.ssh/ Sie finden Ihren öffentlichen Schlüssel als id_rsa.pub. Der Inhalt sollte an Ihre Server angehängt werden authorized_keys Datei durch den Transport über ein transportfähiges Medium (USB-Stick) oder durch kurzes aktivieren Passwort-Authentifizierung auf dem Server, dann mit ssh-copy-id ~/.ssh/id_rsa.pub username@server und dann wieder deaktivieren.

Wenn Sie Ihren Schlüssel mit einer Passphrase (im ersten Schritt) sichern möchten, können Sie verwenden ssh-agent oder den Ubuntu-Schlüsselring, um diesen Phaser lokal zu sichern, damit Sie nicht ständig tippen müssen.


4
2018-06-04 17:32