Wie richte ich SSH ein, damit ich mein Passwort nicht eingeben muss?

Wie richte ich SSH ein, damit ich mein Passwort nicht eingeben muss, wenn ich eine Verbindung zu einem Host herstelle?

 161
Author: Richard Hoskins , 2009-07-18

10 answers

Generieren Sie einen SSH-Schlüssel (falls Sie keinen haben)

Wenn Sie GNOME verwenden, kann die seahorse - Anwendung ("Passwörter und Verschlüsselungsschlüssel") dies für Sie tun: Datei -> Neu -> Secure Shell Key.

Wenn Sie terminal bevorzugen, führen Sie ssh-keygen -t <type> aus, um ein Schlüsselpaar zu generieren. Gültige Schlüsselpaartypen sind:

  • rsa: der Standardwert
  • dsa: mehr oder weniger äquivalent, außer beschränkt auf 1024-Bit-Schlüssel
  • ecdsa: gleiche Sicherheit mit kleinere Schlüssel, aber relativ neu und etwas selten in SSH-Software.
  • ed25519: Hohe Sicherheit (widerstandsfähiger gegen Seitenkanalangriffe und schwache Zufallszahlengeneratoren). Sehr schnelle Signaturgenerierung. Sehr neu. Nur verfügbar in OpenSSH >= 6.5.

Das Programm fragt Sie nach einer Passphrase und einem Speicherort für den neuen Schlüssel. Die Verwendung des vorgeschlagenen Standardpfads wird empfohlen, da alle anderen Tools dort danach suchen.

Hochladen der öffentliche Schlüssel zum Remote-Server

Wiederum kann seahorse das oft für Sie tun - klicken Sie in My Personal Keys mit der rechten Maustaste auf Ihren SSH-Schlüssel und wählen Sie Configure key for secure shell.

Oder ssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host im Terminal.

Oder ganz manuell Schritt für Schritt:

  1. Erstellen Sie ein Verzeichnis (falls es noch nicht existiert) mit dem Namen .ssh im Home-Verzeichnis des Remote-Benutzers auf dem Remote-Host.
  2. Erstellen Sie in diesem Verzeichnis eine Datei named authorized_keys (falls es noch nicht existiert).
  3. Falls Ihr Remote umask liberaler als üblich ist, machen Sie die Datei nicht gruppenbeschreibbar: chmod go-w ~/.ssh ~/.ssh/authorized_keys.
  4. Schließlich kopieren (anhängen) Sie irgendwie den Inhalt Ihres lokalen öffentlichen Schlüssels (~/.ssh/id_rsa.pub) in die Remote-Datei ~/.ssh/authorized_keys.

Den Schlüssel in den SSH-Agenten laden

Wenn Sie Ihren privaten Schlüssel in einen ssh Agent laden, wird der entschlüsselte Schlüssel im Speicher gespeichert. Wir möchten, dass dies die erneute Eingabe des Passworts vermeidet wann immer wir Shell in einen Server.

Zuerst muss der Agent gestartet oder der Pfad eines gestarteten Kommunikations-Sockets in eine Variable geladen werden. Wenn Sie ssh-agent auf einem Terminal ausführen, werden Befehle zum Zuweisen und Festlegen der Agentvariablen generiert. Diese Befehle können zur Verwendung in einem anderen Terminal in einer Datei gespeichert werden. Alternativ könnte man diese Befehle ausführen und vergessen, denselben Agenten in einem anderen Terminal erneut zu verwenden. zB: eval $(ssh-agent).

Das Laden des Schlüssels ist einfach es geht darum, ssh-add auszuführen und ihm die Passphrase zu geben.

Wenn Sie GNOME verwenden, bietet der gnome-Keyring-Daemon normalerweise die gleiche SSH-Agentenfunktionalität wie der ssh-Agent, sodass Sie nichts starten müssen. GNOME lädt und entsperrt den Schlüssel automatisch auch beim Login.

Shell in den remote-server ohne Passwort -

Wenn alles richtig gemacht wurde, werden Sie durch die Verwendung von ssh user@server nicht zur Eingabe eines Passworts aufgefordert. Wenn etwas mit dem Agenten nicht stimmt und nicht der Schlüssel, Sie werden aufgefordert, die Passphrase für den Schlüssel einzugeben, und nicht das Passwort für das Benutzerkonto.

Alles, was ssh für die Kommunikation verwendet, funktioniert ohne Eingabe des Benutzerkontokennworts, wenn der richtige Schlüssel in den Agenten geladen wird. Programme wie scp, sftp und rsync nutzen dies.


Anmerkungen:

  • Sie benötigen nur einen SSHv2-Schlüssel, da SSHv1 sehr unsicher und jetzt unbenutzt ist.
  • Sie auch benötigen Sie nur einen Schlüsseltyp - entweder RSA oder DSA reicht aus. (ed25519 und ECDSA sind beide neu und werden daher nicht überall unterstützt.)
  • Alle diese Schritte sind für RSA-und DSA-Schlüssel gleich. Wenn Sie DSA verwenden, verwenden Sie id_dsa anstelle von id_rsa, und ECDSA hat id_ecdsa.
  • OpenSSH Server älter als 3.0 verwendet authorized_keys2 - aber es ist wirklich unwahrscheinlich, dass Sie etwas älter als 5.0 im Einsatz finden.
  • Diese Anweisungen gelten nur für OpenSSH-version 3.0 und höher. lsh, ssh.com, und andere (Unix und nicht) SSH-Server sind in diesem Tutorial nicht enthalten.

Beispiele:

  • Kopieren des öffentlichen Schlüssels auf einen Remote-Host:

    ssh-copy-id -i ~/.ssh/id_rsa.pub myaccount@remotehost       # this
    
    cat ~/.ssh/id_rsa.pub | ssh myaccount@remotehost \
          'mkdir -p ~/.ssh ; cat >> ~/.ssh/authorized_keys'     # or this
    
  • Agentenvariablen zur Wiederverwendung speichern (ausführliches Beispiel)
    ssh-agent > ~/.ssh/cross-terminal-agent
    . ~/.ssh/cross-terminal-agent
    
 180
Author: grawity,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-05-01 02:30:12

Sie haben nicht angegeben, auf welchem Unix Sie sich befinden, mit welchem Unix Sie eine Verbindung herstellen, welche Shell Sie verwenden, welche SSH-Variante Sie verwenden usw. Einige davon müssen möglicherweise geringfügig angepasst werden; Dies basiert auf relativ neueren Versionen von OpenSSH, die bei vielen Unix-Varianten verwendet werden.

Dies ist alles von Ihrem lokalen Desktop-System.

ssh-keygen

Stellen Sie sicher, dass Sie den Standardwert für den Keyname verwenden. Ich schlage vor, dass Sie eine Passphrase für diesen Schlüssel setzen, sonst ist es ein Sicherheitsproblem. "- t rsa " wäre keine schlechte Idee, wird aber wahrscheinlich nicht benötigt.

ssh-copy-id username@server

Das fragt Sie nach dem Passwort, mit dem Sie sich anmelden würden, und richtet das authorized_keys-Zeug für Sie ein. (keine Notwendigkeit, es von Hand zu tun)

Dann dies:

`ssh-agent`

Oder vielleicht dies:

exec ssh-agent sh

Oder:

exec ssh-agent bash

Dadurch wird ein SSH-Agent gestartet, der Ihren Schlüssel halten kann. Wenn Sie bei vielen modernen Unix-Varianten grafisch angemeldet sind, hat dies bereits stattgefunden. Der erste variante (mit den Backticks) setzt einen ssh-Agent in den Hintergrund und richtet die Umgebungsvariablen ein, um mit ihm zu sprechen. Die zweiten beiden lassen den Agenten eine Shell für Sie ausführen, sodass der Agent beim Beenden der Shell beendet wird.

In vielen modernen Unix-Varianten wird bereits ein Agent für Sie ausgeführt, insbesondere wenn Sie sich grafisch angemeldet haben. Sie könnten versuchen, "ps aux | grep ssh-agent" oder "ps -ef | grep ssh-agent"; wenn etwas bereits ausgeführt wird, verwenden.

Dann schließlich:

ssh-add

Es wird nach einer Passphrase gefragt; gib ihm den, den du ssh-keygen gegeben hast. Es gibt auch Möglichkeiten, es grafisch darzustellen. Und Sie können den ssh-Agent und ssh-add Sachen in Ihre Login-Skripte setzen (Setup ist anders, je nach Shell, die Sie verwenden), um dies zu automatisieren, aber einige Unix-Varianten (aktuelle Ubuntu Linux, zum Beispiel) tun die meisten davon automatisch, so dass alles, was Sie wirklich tun müssen, ist einen Schlüssel zu erstellen und ssh-copy-id verwenden, um es auf dem Remote-Host einzurichten.

Jetzt sollte "ssh username@server " funktionieren, ohne nach einer Authentifizierung zu fragen. Hinter den Kulissen wird ein Schlüssel verwendet, den der ssh-Agent hält, und der Agent wird gebeten, die magischen Signaturtricks dafür auszuführen.

 22
Author: freiheit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-08-20 22:18:24

Dies ist auch unter Windows in PuTTY möglich.

Sobald Sie das öffentliche/private Schlüsselpaar eingerichtet haben (wie andere Antworten hier zeigen), führen Sie PuTTYgen aus. Laden Sie dort den vorhandenen privaten Schlüssel, den Sie bereits eingerichtet haben, und speichern Sie ihn dann als privaten PuTTY-Schlüssel (ppk).

Klicken Sie dann in PuTTY einfach auf die gespeicherte Sitzung, bei der Sie sich automatisch anmelden möchten, und klicken Sie auf Laden. Von hier aus gehen Sie in Verbindung - > Daten im linken Bereich, und in" Auto-Login Benutzername " geben Sie die benutzername für diesen Remote-Server:

PuTTY Benutzername Eintrag

Danach gehe in Verbindung - > SSH - > Auth und suche nach dem ppk, den du in PuTTYgen gemacht hast:

PuTTY privater Schlüsseleintrag

Kehren Sie dann zur Sitzungsseite zurück und speichern Sie die zuvor geladene Sitzung.

 12
Author: matthews,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-09-29 04:56:02

Aus einer sehr ähnlichen Frage zu ServerFault würde ich empfehlen, ssh-copy-id zu verwenden, die alle Schritte zum Einrichten von Authentifizierungsschlüsseln für Sie ausführt:

Ssh-copy-id ist ein Skript, das ssh verwendet so melden Sie sich bei einem Remote-Computer an (vermutlich mit einem Login-Passwort, also passwort-Authentifizierung sollte sein aktiviert, es sei denn, Sie haben einige getan clevere Verwendung mehrerer Identitäten)

Es ändert auch die Berechtigungen der remote-Benutzer-home -, ~/.ssh und ~/.ssh/authorized_keys zum Entfernen der Gruppe schreibbarkeit (was sonst verhindern, dass Sie sich anmelden, wenn die remote sshd hat StrictModes in seinem Konfiguration).

Wenn die Option-i angegeben ist, dann ist die identitätsdatei (standardmäßig ~/.ssh/identity.pub) verwendet wird, unabhängig davon, ob es welche gibt schlüssel in Ihrem ssh-Agent.

Alles, was Sie tun müssen, ist einfach dies:

ssh-copy-id user@host

Geben Sie Ihr Passwort einmal ein, und Sie sind gut zu gehen!

 3
Author: Chris Bunch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-04-13 12:14:40

Abgesehen von allen bereits erwähnten Anweisungen zum Festlegen von ssh-Schlüsseln empfehle ich Keychain als ssh-agent Konsolenfrontend, mit dem Sie nur einen verarbeiten können pro Systemprozess anstelle von pro Anmeldung.

Ich weiß, es gibt schon GNOME-und KDE-tools, die dasselbe tun, aber wenn Sie das console junkie - Typ das ist großartig (und kann auf den meisten Unix-Systemen).

Um es zu verwenden, fügen Sie einfach Folgendes an Ihre ~/.bashrc (ähnlich für andere Shells):

if type keychain >/dev/null 2>/dev/null; then
  keychain --nogui -q <all your SSH/PGP keys>
  [ -f ~/.keychain/${HOSTNAME}-sh ] && . ~/.keychain/${HOSTNAME}-sh
  [ -f ~/.keychain/${HOSTNAME}-sh-gpg ] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi
 3
Author: Fran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-08-09 22:26:16

Http://linuxproblem.org/art_9.html

Ihr Ziel

Sie möchten Linux und OpenSSH verwenden, um Ihre Aufgaben zu automatisieren. Daher benötigen Sie eine automatische Anmeldung von Host A / Benutzer a zu Host B / Benutzer b. Sie möchten keine Kennwörter eingeben, da Sie ssh von a innerhalb eines Shell-Skripts aufrufen möchten.

 2
Author: TheTXI,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-12 13:48:39

, schrieb ich diese sehr sehr kurzes tutorial nach, um WIRKLICH frustriert mit wirklich, WIRKLICH lange tutorials cos wirklich, es ist so einfach :)

test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"

scp ~/.ssh/id_rsa.pub destID@destMachine:/tmp/ #type password

ssh destID@destMachine #type password

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

rm /tmp/id_rsa.pub
 2
Author: samthebest,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-02-01 17:26:39

Putty hat eine -pw option, mit der Sie eine Verknüpfung auf dem Desktop wie folgt erstellen können:

"C:\Program Files\PuTTY\putty.exe" -ssh [email protected] -pw your_password
 2
Author: Enes Genç,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-05-31 23:51:45
  1. Führen Sie auf dem verbindenden Host ssh-keygen aus. (Wenn es Ihnen sagt, dass Sie einen Typ angeben müssen, tun Sie ssh-keygen -t rsa.) Wenn es Sie nach einem Speicherort fragt, nehmen Sie die Standardeinstellung. Wenn Sie nach einer Passphrase gefragt werden, drücken Sie die Eingabetaste, um keine Passphrase zu erhalten.
  2. cat ~/.ssh/id_rsa.pub (oder was auch immer der Standardspeicherort in ssh-keygen war, obwohl Sie eine wirklich alte ssh - Installation haben müssten, damit sie anders ist); Kopieren Sie die Ausgabe in Ihre Zwischenablage.
  3. Melden Sie sich normalerweise als Konto beim Zielhost an. möchten Sie eine Verbindung zu. Bearbeiten Sie die Datei ~/.ssh/authorized_keys (wenn ~/.ssh nicht existiert, slogin an einen anderen Ort; Dies ist die einfache und einfache Möglichkeit, sie mit den richtigen Berechtigungen zu erstellen). Fügen Sie Ihre Zwischenablage (mit dem id_rsa.pub vom anderen Host) in diese Datei ein.
 1
Author: chaos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-07-18 17:06:33

Wenn Sie alles im Terminal unter Linux tun möchten:

Auf dem host -

Cd ~/.ssh/

Ssh-keygen -t {rsa|dsa} -b {1024/2048/4096} -C "some comment text, wenn Sie wollen" -f id_ArbitraryName

Die Elemente in der {} sind Optionen, verwenden rsa oder dsa und wählen Sie die Bitgröße (größer ist sicherer)

Dann müssen Sie die Berechtigungen zu den Dateien authorized_keys und authorized_keys2 hinzufügen.

Cat id_ArbitraryName.Pub >> authorized_keys -

Cat id_AribtraryName.pub >> authorized_keys2

Laden Sie dann die id_AribtraryName-Datei in das Feld herunter, aus dem Sie ssh möchten. Wenn die Verbindungsbox Unix-basiert ist, kann eine Konfigurationsdatei erforderlich sein (in Putty hat darüber jemand berichtet).

Auf der Verbindungsbox

In Ihrer Konfigurationsdatei-vim ~/.ssh/config

Host example.host.com # oder Ihr Computername

Benutzername des Benutzers

IdentityFile ~/.ssh/id_ArbitraryName

Die Konfigurationsdatei benötigt Berechtigungen von 600. Der SSh-Ordner benötigt 700.

Hoffe, das hilft, wenn Sie auf das Konfigurationsproblem stoßen, das häufig weggelassen wird.

 0
Author: nerdwaller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-12 13:48:39