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?
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:
- Erstellen Sie ein Verzeichnis (falls es noch nicht existiert) mit dem Namen
.ssh
im Home-Verzeichnis des Remote-Benutzers auf dem Remote-Host. - Erstellen Sie in diesem Verzeichnis eine Datei named
authorized_keys
(falls es noch nicht existiert). - Falls Ihr Remote
umask
liberaler als üblich ist, machen Sie die Datei nicht gruppenbeschreibbar:chmod go-w ~/.ssh ~/.ssh/authorized_keys
. - 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 vonid_rsa
, und ECDSA hatid_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
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.
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:
Danach gehe in Verbindung - > SSH - > Auth und suche nach dem ppk, den du in PuTTYgen gemacht hast:
Kehren Sie dann zur Sitzungsseite zurück und speichern Sie die zuvor geladene Sitzung.
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!
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
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.
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
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
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
- Führen Sie auf dem verbindenden Host
ssh-keygen
aus. (Wenn es Ihnen sagt, dass Sie einen Typ angeben müssen, tun Siessh-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. -
cat ~/.ssh/id_rsa.pub
(oder was auch immer der Standardspeicherort inssh-keygen
war, obwohl Sie eine wirklich altessh
- Installation haben müssten, damit sie anders ist); Kopieren Sie die Ausgabe in Ihre Zwischenablage. - 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 demid_rsa.pub
vom anderen Host) in diese Datei ein.
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.
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