Wie richtet man ssh ein, um einen Benutzer mit Schlüsseln anstelle eines Benutzernamens / Passworts zu authentifizieren?
34
Für jeden Benutzer: Sie sollten (auf ihrem lokalen Computer) ihr Schlüsselpaar mithilfe von generieren ssh-keygen -t rsa
(das rsa
kann durch dsa
oder rsa1
auch ersetzt werden, obwohl diese Optionen nicht empfohlen werden). Dann müssen sie den Inhalt ihres öffentlichen Schlüssels ( id_rsa.pub
) ~/.ssh/authorized_keys
auf dem Server ablegen, bei dem sie angemeldet sind.
Eigentlich bevorzuge ich ssh-copy-id , ein Skript, das standardmäßig auf * nix zu finden ist (auch unter Mac OS X problemlos möglich) und das dies automatisch für Sie erledigt. Von der Manpage:
quelle
Hum, versteh es nicht. Einfach einen Schlüssel erstellen und loslegen. :) HOWTO Zusätzlich können Sie die Anmeldung per Passwort verbieten. In zB / etc / ssh / sshd_config:
quelle
Das ist ziemlich geradlinig zu tun - es eine einfache Komplettlösung ist zu hier .
Die wichtigsten Punkte sind:
ssh-keygen
auf Ihrem Computer. Dadurch werden öffentliche und private Schlüssel für Sie generiert.~/.ssh/id_rsa.pub
) und fügen Sie ihn~/.ssh/authorized_keys
auf dem Remote-Computer ein.Beachten Sie, dass dies allen Benutzern, die Zugriff auf den privaten Schlüssel auf Ihrem Computer haben, den gleichen Zugriff auf den Remote-Computer ermöglicht. Wenn Sie das Schlüsselpaar generieren, können Sie hier aus Sicherheitsgründen ein Kennwort eingeben.
quelle
Für Windows-Benutzer zum Einrichten von Kitt
quelle
Zusammenfassend lässt sich sagen, dass das Einrichten von SSH-Schlüsseln einfach und von unschätzbarem Wert ist.
Auf der Maschine , dass Sie SSHing sein von Ihnen Ihr Schlüsselpaar benötigen zu generieren:
Drücken Sie einfach die Eingabetaste, wenn Sie dazu aufgefordert werden, und geben Sie eine Passphrase ein. Dies unterscheidet sich idealerweise von Ihrem regulären Anmeldekennwort auf dem aktuellen Host und denjenigen, zu denen Sie SSHing ausführen.
Als nächstes müssen Sie an den Host - Schlüssel Sie gerade erzeugt kopieren , die Sie SSH wollen zu . Die meisten Linux-Distributionen haben dazu ein Tool
ssh-copy-id
:Wenn Ihre Distribution das nicht hat, sollten Sie den Schlüssel auf den Zielhost kopieren und zur (möglicherweise vorhandenen)
.ssh/authorized_keys
Datei hinzufügen :Um den größtmöglichen Nutzen aus SSH-Schlüsseln zu ziehen, müssen Sie einen SSH-Agenten ausführen. Wenn Sie eine Desktop-Umgebung (Gnome, KDE usw.) verwenden, wird durch einfaches Abmelden und erneutes Anmelden ein SSH-Agent für Sie gestartet. Wenn nicht, können Sie die folgenden Funktionen der Shell RC - Datei (hinzufügen
.bashrc
,.profile
usw.):quelle
Dies ist als Checkliste gedacht. Wenn man es Punkt für Punkt verfolgt, sollten die häufigsten Fallstricke für passwortlose Anmeldungen behandelt werden. Die meisten dieser Punkte werden an anderer Stelle erwähnt. Dies ist eine Aggregation.
Auf jedem Computer muss sich unter dem Konto ein
~/.ssh
Verzeichnis befindenchmod 700
, aus dem die Verbindungen stammen oder empfangen werden.Der (private) Schlüssel muss ohne eine Passphrase generiert werden, oder es kann ein Agent gestartet werden, der eine entschlüsselte Version eines Schlüssels mit einer Passphrase enthält, die von den Clients verwendet werden kann. Starten Sie den Agenten mit
ssh-agent $SHELL
. Es$SHELL
hat eine Weile gedauert, bis ich den Teil gefunden habe. In der Manpage finden Sie zahlreiche Details, wenn Sie einen Agenten verwenden möchten.Vergessen Sie nicht, dass schwache Schlüssel (<2048 Bit DSA) standardmäßig von neueren Versionen von sshd nicht akzeptiert werden.
Folgendes muss auf der Client-Seite Maschine getan werden , um ihren Ursprung eine Verbindung her.
Ihr privater Schlüssel muss in
~/.ssh/id_rsa
oder~/.ssh/id_dsa
entsprechend platziert werden. Sie können einen anderen Namen verwenden, der jedoch in der Option -i des Befehls ssh auf dem Ursprungscomputer enthalten sein muss, um den privaten Schlüssel explizit anzugeben.Ihr privater Schlüssel muss sein
chmod 600
.Stellen Sie sicher, dass Ihr privater Ordner ist
chmod 700
.Nun, damit eine Maschine eine Anfrage erhalten kann. Ein gängiges Modell ist, dass ein Administrator Ihnen Zugriff auf einen Computer gewährt, den Sie nicht besitzen (z. B. Shared Web Hosting). Daher besteht die Idee bei ssh darin, dass Sie Ihren öffentlichen Schlüssel jedem anbieten , der Ihnen das Konto gibt. Aus diesem Grund legen Sie in der Regel keine privaten Schlüssel auf dem Computer ab, auf dem Anforderungen eingehen. Wenn Sie jedoch möchten, dass dieser Computer auch ausgehendes ssh ausführt, müssen Sie es wie einen Ursprungscomputer mit den obigen Schritten behandeln.
~/.ssh/authorized_keys
unter dem Konto aufgerufen wird, das die Verbindungen erhalten soll. Sie können auch andere Schlüssel eingeben, die über dieses Konto eine Verbindung herstellen dürfen. Eine besonders schwierige Sache, wenn Sie sich in vi befinden und den Schlüssel aus dem Einfügepuffer in PuTTY in die Datei einfügen, ist folgende: Der Schlüssel beginnt mit einem "ssh-". Wenn Sie sich nicht im Einfügemodus befinden, wird vi mit dem ersten "s" in den Einfügemodus versetzt, und der Rest der Taste sieht gut aus. Am Anfang der Taste fehlt jedoch ein "s". Es hat Tage gedauert, bis ich das gefunden habe.chmod 600 ~/.ssh/authorized_keys
. Es muss mindestens gw sein.quelle
Wie bereits erwähnt, sollten Ihre Benutzer mit ssh-keygen auf ihren Client-Computern Schlüsselpaare für sich selbst erstellen und ihren öffentlichen Schlüssel zu ~ / .ssh / authorized_keys auf dem Computer hinzufügen, auf dem sie sich anmelden möchten.
Für detailliertere Informationen empfehle ich jedoch SSH, The Secure Shell .
quelle
Hier gibt es gute Ratschläge, deshalb werde ich es nicht wiederholen. Sobald Sie einen Server eingerichtet haben, auf dem Sie sich mit Schlüsseln anmelden können, können Sie andere Server so einrichten, dass sie dasselbe mit diesem einen Liner tun:
Wechseln Sie einfach in Ihr Home-Verzeichnis, definieren Sie die Variable remote als einen oder mehrere Servernamen und führen Sie eine Reihe von Schritten aus. Das Passwort, nach dem gefragt wird, ist Ihr SSH-Passwort für den Remote-Server. Sie können natürlich eine vereinfachte Version ohne die for-Schleife verwenden:
HINWEIS: Kopieren Sie nur über Ihre öffentlichen Schlüssel. Sie möchten nicht, dass Ihre privaten Schlüssel auf einem Server liegen, auf dem jeder mit sudo sie kopieren und Ihre Passphrase erzwingen kann.
quelle