Generieren Sie einen SSH-Schlüssel (wenn Sie keinen haben)
Wenn Sie GNOME verwenden, kann die Seepferdchen- Anwendung ("Kennwörter und Verschlüsselungsschlüssel") dies für Sie erledigen: Datei -> Neu -> Secure Shell-Schlüssel .
Wenn Sie das Terminal bevorzugen, führen Sie es aus, um ein Schlüsselpaar zu generieren. Gültige Schlüsselpaartypen sind:ssh-keygen -t <type>
- rsa: die Standardeinstellung
- dsa: mehr oder weniger gleichwertig, außer auf 1024-Bit-Schlüssel beschränkt
- ecdsa: gleiche Sicherheit mit kleineren Schlüsseln, aber relativ neu und in SSH-Software etwas selten.
- ed25519: Hohe Sicherheit (widerstandsfähiger gegen Seitenkanalangriffe und schwache Zufallszahlengeneratoren). Sehr schnelle Signaturerstellung. 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. Es wird empfohlen, den vorgeschlagenen Standardpfad zu verwenden, da dort alle anderen Tools danach suchen.
Laden Sie den öffentlichen Schlüssel auf den Remote-Server hoch
Wieder kann Seepferdchen das oft für Sie tun. Klicken Sie in " Meine persönlichen Schlüssel" mit der rechten Maustaste auf Ihren SSH-Schlüssel und wählen Sie " Schlüssel für sichere Shell konfigurieren" .
Oder ssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host
im Terminal.
Oder ganz von Hand Schritt für Schritt:
- Erstellen Sie ein Verzeichnis (falls noch nicht vorhanden), das
.ssh
im Heimatverzeichnis des Remote-Benutzers auf dem Remote-Host benannt ist. - Erstellen Sie in diesem Verzeichnis eine Datei mit dem Namen
authorized_keys
(falls noch nicht vorhanden). - Falls Ihre Fernbedienung
umask
liberaler als üblich ist, machen sich die Datei nicht Gruppe beschreibbare:chmod go-w ~/.ssh ~/.ssh/authorized_keys
. - Kopieren Sie den Inhalt Ihres lokalen öffentlichen Schlüssels (
~/.ssh/id_rsa.pub
) schließlich irgendwie in die Remote-~/.ssh/authorized_keys
Datei.
Laden Sie den Schlüssel in den SSH-Agenten
Wenn Sie Ihren privaten Schlüssel in einen SSH- Agenten laden, wird der entschlüsselte Schlüssel im Speicher gehalten. Wir möchten, dass das Kennwort nicht erneut eingegeben wird, wenn wir einen Server verwenden.
Zunächst muss der Agent gestartet oder der Pfad eines gestarteten Kommunikationssockels in eine Variable geladen werden. Wenn Sie den ssh-agent auf einem Terminal ausführen, werden Befehle zum Zuweisen und Einstellen der Agentenvariablen generiert. Diese Befehle können zur Verwendung in einem anderen Terminal in einer Datei gespeichert werden. Alternativ können Sie diese Befehle ausführen und vergessen, denselben Agenten in einem anderen Terminal erneut zu verwenden. zB: eval $(ssh-agent)
.
Zum Laden des Schlüssels müssen Sie ihn einfach ausführen ssh-add
und ihm die Passphrase geben.
Wenn Sie GNOME verwenden, bietet gnome-keyring-daemon normalerweise die gleiche SSH-Agentenfunktionalität wie ssh-agent. Sie müssen also nichts starten. GNOME wird den Schlüssel auch beim Anmelden automatisch laden und entsperren.
Shell ohne Kennwort in den Remote-Server
Wenn alles richtig gemacht wurde, werden Sie nicht zur Eingabe eines Kennworts aufgefordert. Wenn mit dem Agenten etwas nicht stimmt und nicht mit dem Schlüssel, werden Sie aufgefordert, die Passphrase für den Schlüssel und nicht das Kennwort für das Benutzerkonto einzugeben.ssh user@server
Alles, was ssh zur Kommunikation verwendet, funktioniert ohne Eingabe des Benutzerkontokennworts, wenn der richtige Schlüssel in den Agenten geladen wird. Programme wie scp, sftp und rsync machen davon Gebrauch.
Anmerkungen:
- Sie benötigen nur einen SSHv2-Schlüssel, da SSHv1 sehr unsicher ist und jetzt nicht verwendet wird.
- Sie benötigen auch nur einen Schlüsseltyp - entweder RSA oder DSA reicht aus. (ed25519 und ECDSA sind beide aktuell 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 vonid_rsa
und ECDSA muss dies tunid_ecdsa
. - OpenSSH-Server älter als 3.0 verwendet
authorized_keys2
- es ist jedoch unwahrscheinlich, dass ältere als 5.0 verwendet werden. - 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 Lernprogramm 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 / authorised_keys '# oder so
- Agentenvariablen für die Wiederverwendung speichern (ausführliches Beispiel)
ssh-agent> ~ / .ssh / cross-terminal-agent . ~ / .ssh / Cross-Terminal-Agent