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

Wie richte ich SSH ein, damit ich mein Passwort nicht eingeben muss, wenn ich mich mit einem Host verbinde?

Antworten:

166 f├╝r Antwort Ôäľ 1

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

Wenn Sie GNOME verwenden, wird die Seepferdchen Anwendung ("Passw├Ârter und Verschl├╝sselungsschl├╝ssel") kann dies f├╝r Sie tun: Datei -> Neu -> Secure Shell Key.

Wenn Sie Terminal bevorzugen, f├╝hren Sie ssh-keygen -t <type> ein Schl├╝sselpaar erzeugen. G├╝ltige Schl├╝sselpaartypen sind:

  • rsa: die standardeinstellung
  • dsa: Mehr oder weniger ├Ąquivalent, mit Ausnahme von 1024-Bit-Schl├╝sseln
  • ecdsa: Gleiche Sicherheit mit kleineren Schl├╝sseln, aber relativ neu und in SSH-Software eher selten.
  • ed25519: Hohe Sicherheit (resistenter gegen Seitenkanalangriffe und schwache Zufallszahlengeneratoren). Sehr schnelle Signaturerstellung. Sehr neu. Nur verf├╝gbar in OpenSSH> = 6.5.

Das Programm fragt Sie nach einem Passphrase und einen Speicherort f├╝r den neuen Schl├╝ssel. Es wird empfohlen, den vorgeschlagenen Standardpfad zu verwenden, da alle anderen Tools dort danach suchen.

Laden Sie den ├Âffentlichen Schl├╝ssel auf den Remote-Server hoch

Nochmal, Seepferdchen kann das oft f├╝r dich tun - in Meine pers├Ânlichen Schl├╝sselKlicken Sie mit der rechten Maustaste auf Ihren SSH-Schl├╝ssel und w├Ąhlen Sie Konfigurieren Sie den Schl├╝ssel f├╝r die sichere Shell.

Oder, ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] im terminal.

Oder ganz manuell Schritt f├╝r Schritt:

  1. Erstellen Sie ein Verzeichnis mit dem Namen (falls noch nicht vorhanden) .ssh im Home-Verzeichnis des Remote-Benutzers auf dem Remote-Host.
  2. Erstellen Sie in diesem Verzeichnis eine Datei mit dem Namen authorized_keys (wenn es nicht schon existiert).
  3. Im Falle Ihrer Fernbedienung umask ist liberaler als ├╝blich, machen Sie die Datei nicht f├╝r Gruppen beschreibbar: chmod go-w ~/.ssh ~/.ssh/authorized_keys.
  4. Kopieren Sie zum Schluss den Inhalt Ihres lokalen Dokuments ├ľffentlicher Schl├╝ssel (~/.ssh/id_rsa.pub) in die Fernbedienung ~/.ssh/authorized_keys Datei.

Laden Sie den Schl├╝ssel in den ssh-Agenten

Wenn Sie Ihren privaten Schl├╝ssel in ein SSH laden Agent, wird der entschl├╝sselte Schl├╝ssel gespeichert. Damit soll vermieden werden, dass das Kennwort bei jedem Shell-Vorgang auf einem Server erneut eingegeben wird.

Zun├Ąchst muss der Agent gestartet oder der Pfad eines gestarteten Kommunikations-Sockets in eine Variable geladen werden. Laufen SSH-Agent Auf einem Terminal werden Befehle f├╝r generiertZuweisen und Setzen der Agentenvariablen. 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. z.B: eval $(ssh-agent).

Das Laden des Schl├╝ssels ist eine einfache Sache des Ausf├╝hrens ssh-add und geben Sie es die Passphrase.

Wenn Sie GNOME verwenden, Gnome-Keyring-Daemon In der Regel bietet der SSH-Agent dieselbe Funktionalit├Ąt wie der SSH-Agent, sodass Sie nichts starten m├╝ssen. GNOME l├Ądt und entsperrt den Schl├╝ssel automatisch auch beim Anmelden.

Shell in den Remote-Server ohne Passwort

Wenn alles richtig gemacht wurde, verwenden Sie ssh [email protected] fordert Sie nicht zur Eingabe eines Passworts auf. Wenn mit dem Agenten und nicht mit dem Schl├╝ssel etwas nicht stimmt, werden Sie aufgefordert, die Passphrase f├╝r den Schl├╝ssel und nicht das Kennwort f├╝r das Benutzerkonto einzugeben.

Alles, was ssh f├╝r die Kommunikation verwendet, funktioniert ohne Eingabe des Benutzerkontokennworts, wenn der richtige Schl├╝ssel im Agenten geladen ist. Programme wie scp, sftp und rsync Nutzen Sie dies.


Anmerkungen:

  • Sie ben├Âtigen nur einen SSHv2-Schl├╝ssel, da SSHv1 sehr unsicher ist und jetzt nicht verwendet wird.
  • Sie ben├Âtigen nur einen Schl├╝sseltyp - entweder RSA oder DSA ist ausreichend. (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 Anstatt von id_rsaund ECDSA wird haben id_ecdsa.
  • OpenSSH-Server ├Ąlter als 3.0 werden verwendet authorized_keys2 - aber es ist sehr 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.comund 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 [E-Mail gesch├╝tzt]       # Dies  cat ~ / .ssh / id_rsa.pub | ssh [E-Mail gesch├╝tzt] 
    "mkdir -p ~ / .ssh; cat >> ~ / .ssh / authorized_keys" # oder dies
    
  • Agentenvariablen zur Wiederverwendung speichern (ausf├╝hrliches Beispiel)
    ssh-agent> ~ / .ssh / terminal├╝bergreifender Agent . ~ / .ssh / terminal├╝bergreifender Agent
    

22 f├╝r Antwort Ôäľ 2

Sie haben nicht angegeben, auf welchem ÔÇőÔÇőUnix Sie sich befinden, auf welchem ÔÇőÔÇőUnixSie stellen eine Verbindung her, welche Shell Sie verwenden, welche SSH-Variante Sie verwenden usw. Einige davon m├╝ssen m├Âglicherweise leicht angepasst werden, dies basiert auf einigerma├čen aktuellen Versionen von OpenSSH, die h├Ąufig verwendet werden von Unix-Varianten.

Dies ist alles von Ihrem lokalen Desktop-System.

ssh-keygen

Stellen Sie sicher, dass Sie die Standardeinstellung f├╝r den Schl├╝sselnamen verwenden. Ich schlage vor, dass Sie tun Setzen Sie eine Passphrase auf diesen Schl├╝ssel, andernfalls handelt es sich um ein Sicherheitsproblem. "-t rsa" w├Ąre keine schlechte Idee, wird aber wahrscheinlich nicht ben├Âtigt.

ssh-copy-id [email protected]

Das fragt Sie nach dem Passwort, mit dem Sie sich anmelden m├Âchten, und richtet das authorised_keys-Zeug f├╝r Sie ein. (Sie m├╝ssen es nicht von Hand tun.)

Dann das:

`ssh-agent`

oder vielleicht das:

exec ssh-agent sh

oder:

exec ssh-agent bash

Dadurch wird ein SSH-Agent gestartet, der die Daten aufnehmen kanndein Schl├╝ssel. Bei vielen modernen Unix-Varianten hat dies bereits stattgefunden, wenn Sie sich grafisch angemeldet haben. Die erste Variante (mit den Backticks) stellt einen ssh-Agenten in den Hintergrund und richtet die Umgebungsvariablen ein, um mit ihm zu sprechen. Die zweite In zwei F├Ąllen f├╝hrt der Agent eine Shell f├╝r Sie aus, 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. Du k├Ânntest es versuchen "ps aux | grep ssh-agent" oder "ps -ef | grep ssh-agent"; wenn schon etwas l├Ąuft, benutze das.

Dann endlich:

ssh-add

Es wird nach einer Passphrase gefragt. gib es dirgab ssh-keygen. Es gibt auch M├Âglichkeiten, es grafisch abzufragen. Und Sie k├Ânnen den ssh-agent und das ssh-add-Zeug in Ihre Anmeldeskripte einf├╝gen (Setup ist abh├Ąngig von der verwendeten Shell), um dies zu automatisieren, aber einige Unix-Varianten (aktuelles Ubuntu Linux) Dies geschieht zum Beispiel gr├Â├čtenteils automatisch, sodass Sie nur einen Schl├╝ssel erstellen und ihn mit ssh-copy-id auf dem Remote-Host einrichten m├╝ssen.

Jetzt, "ssh [email protected]"sollte funktionieren, ohne nach einer Authentifizierung zu fragen. Hinter den Kulissen wird ein Schl├╝ssel verwendet, den der ssh-agent in der Hand h├Ąlt, und der Agent wird aufgefordert, die Zaubertricks f├╝r das Signieren auszuf├╝hren.


11 f├╝r Antwort Ôäľ 3

Es ist m├Âglich, dies in zu tun Kitt auch unter Windows.

Sobald Sie das ├Âffentliche / private Schl├╝sselpaar festgelegt habenF├╝hren Sie PuttyGen aus (wie andere Antworten hier zeigen). Laden Sie dort den vorhandenen privaten Schl├╝ssel, den Sie bereits eingerichtet haben, und speichern Sie ihn als privaten PuTTY-Schl├╝ssel (ppk).

Klicken Sie dann in PuTTY einfach auf die gespeicherte SitzungSie m├Âchten sich automatisch anmelden und auf Laden klicken. Gehen Sie von hier aus in Verbindung -> Daten im linken Bereich und geben Sie in "Benutzername f├╝r automatische Anmeldung" den Benutzernamen f├╝r diesen Remote-Server ein:

PuTTY-Benutzernamen eingeben

Gehen Sie danach zu Connection -> SSH -> Auth und suchen Sie nach dem in PuttyGen erstellten ppk:

PuTTY Private Key-Eingabe

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


3 f├╝r Antwort Ôäľ 4

Von einer sehr ├Ąhnlichen Frage an ServerFaultW├╝rde ich empfehlen ssh-copy-id, der alle Schritte zum Einrichten von Authentifizierungsschl├╝sseln f├╝r Sie ausf├╝hrt:

ssh-copy-id ist ein Skript, das ssh verwendet um sich einzuloggeneine entfernte Maschine (vermutlich mit einem Login - Passwort, so Passwortauthentifizierung sollte sein aktiviert, es sei denn, Sie haben etwas getan geschickte Verwendung mehrerer Identit├Ąten)

Es ├Ąndert auch die Berechtigungen der Fernbedienunguser "s home, ~ / .ssh und ~ / .ssh / authorized_keys zum Entfernen der Gruppe Beschreibbarkeit (die sonst w├╝rde Sie k├Ânnen sich nicht anmelden, wenn das Bei remote sshd sind StrictModes eingestellt Aufbau).

Wenn die Option -i angegeben ist, wird die Option Identit├Ątsdatei (Standardeinstellung ist ~ / .ssh / identity.pub) verwendet wird, egal ob es welche gibt Geben Sie Ihren SSH-Agenten ein.

Alles was Sie tun m├╝ssen, ist einfach das:

ssh-copy-id [email protected]

Geben Sie Ihr Passwort einmal ein und Sie k├Ânnen loslegen!


3 f├╝r Antwort Ôäľ 5

Abgesehen davon, dass bereits gesagt wurde, wie man SSH-Schl├╝ssel setzt, empfehle ich Schl├╝sselbund Als ein SSH-Agent Konsolen-Frontend, mit dem Sie nur einen pro Systemprozess anstatt pro Login verwalten k├Ânnen.

Ich wei├č, dass es bereits GNOME- und KDE-Tools gibt, die dasselbe tun, aber wenn Sie das sind Console Junkie Typ dies ist gro├čartig (und kann auf den meisten Unix-Systemen verwendet werden).

Um es zu benutzen, h├Ąngen Sie einfach das Folgende an ~/.bashrc (├Ąhnlich f├╝r andere Muscheln):

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

2 f├╝r Antwort Ôäľ 6

http://linuxproblem.org/art_9.html

Dein Zielen

Sie m├Âchten Linux und OpenSSH zur Automatisierung verwendenIhre Aufgaben. Daher ben├Âtigen Sie eine automatische Anmeldung von Host A / Benutzer a zu Host B / Benutzer b. Sie m├Âchten keine Passw├Ârter eingeben, da Sie ssh von einem Shell-Skript aus aufrufen m├Âchten.


2 f├╝r die Antwort Ôäľ 7

Ich habe dieses sehr, sehr kurze Tutorial geschrieben, nachdem ich von WIRKLICH WIRKLICH langen Tutorials wirklich frustriert war, weil es so einfach ist :)

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

scp ~/.ssh/id_rsa.pub [email protected]:/tmp/ #type password

ssh [email protected] #type password

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

rm /tmp/id_rsa.pub

2 f├╝r Antwort Ôäľ 8

Kitt hat ein -pw Option, mit der Sie eine Verkn├╝pfung auf dem Desktop wie folgt erstellen k├Ânnen:

"C:Program FilesPuTTYputty.exe" -ssh [email protected] -pw your_password

1 f├╝r die Antwort Ôäľ 9
  1. F├╝hren Sie auf dem verbindenden Host aus ssh-keygen. (Wenn Sie dazu aufgefordert werden, einen Typ anzugeben, f├╝hren Sie Folgendes aus: ssh-keygen -t rsa.) Wenn Sie nach einem Dateispeicherort gefragt werden, ├╝bernehmen Sie den Standard. Wenn Sie nach einer Passphrase gefragt werden, dr├╝cken Sie die Eingabetaste, um keine Passphrase einzugeben.
  2. cat ~/.ssh/id_rsa.pub (oder was auch immer der Standardspeicherort der Datei in ssh-keygen war, obwohl du eine haben m├╝sstest Ja wirklich alt ssh installieren, damit es anders ist); Kopieren Sie die Ausgabe in Ihre Zwischenablage.
  3. Melden Sie sich normalerweise beim Zielhost als das Konto an, zu dem Sie eine Verbindung herstellen m├Âchten. Bearbeiten Sie die Datei ~/.ssh/authorized_keys (wenn ~/.ssh existiert nicht, slogin zu irgendwo; Dies ist der einfache Weg, um es mit den richtigen Berechtigungen zu erstellen. F├╝gen Sie Ihre Zwischenablage ein (mit dem id_rsa.pub vom anderen Host) in diese Datei.

0 f├╝r die Antwort Ôäľ 10

Wenn Sie alles im Terminal unter Linux erledigen m├Âchten:

Auf dem Host

cd ~ / .ssh /

ssh-keygen -t {rsa | dsa} -b {1024 | 2048 | 4096} -C "Kommentartext, falls gew├╝nscht" -f id_ArbitraryName

Die Elemente in {} sind Optionen. Verwenden Sie rsa oder dsa und w├Ąhlen Sie die Bitgr├Â├če (gr├Â├čer ist sicherer).

Anschlie├čend 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 Datei id_AribtraryName in die Box herunter, von der Sie ssh m├Âchten. Wenn die Verbindungsbox auf Unix basiert, ist m├Âglicherweise eine Konfigurationsdatei erforderlich (in Putty hat das jemand oben behandelt).

Auf der Anschlussbox

In Ihrer Konfigurationsdatei - vim ~ / .ssh / config

Hosten Sie example.host.com # oder Ihren Computernamen

Benutzer Benutzername

IdentityFile ~ / .ssh / id_ArbitraryName

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

Ich hoffe, das hilft, wenn Sie auf das h├Ąufig ausgelassene Konfigurationsproblem sto├čen.


Lies jetzt