Antworten:
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:
ssh-copy-id ist ein Skript, das ssh verwendet, um sich bei einem Remote-Computer anzumelden (vermutlich mit einem Anmeldekennwort, daher sollte die Kennwortauthentifizierung aktiviert sein, es sei denn, Sie haben mehrere Identitäten geschickt verwendet).
Es ändert auch die Berechtigungen für das Home des Remote-Benutzers, ~ / .ssh und ~ / .ssh / authorized_keys, um die Gruppenbeschreibbarkeit zu entfernen (was Sie andernfalls daran hindern würde, sich anzumelden, wenn auf dem Remote-SSHD StrictModes in seiner Konfiguration festgelegt ist).
Wenn die Option -i angegeben ist, wird die Identitätsdatei (standardmäßig ~ / .ssh / identity.pub) verwendet, unabhängig davon, ob sich in Ihrem ssh-agent Schlüssel befinden.
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:
PasswordAuthentication no
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.
Für Windows-Benutzer zum Einrichten von Kitt
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:
claudius:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dinomite/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <PASSPHRASE>
Enter same passphrase again: <PASSPHRASE>
Your identification has been saved in /home/dinomite/.ssh/id_rsa.
Your public key has been saved in /home/dinomite/.ssh/id_rsa.pub.
The key fingerprint is:
a3:93:8c:27:15:67:fa:9f:5d:42:3a:bb:9d:db:93:db dinomite@claudius
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
:
claudius:~$ ssh-copy-id caligula.dinomite.net
Now try logging into the machine, with "ssh 'caligula.dinomite.net'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
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 :
claudius:~$ scp .ssh/id_dsa.pub caligula.dinomite.net:
id_dsa.pub 100% 1119 1.1KB/s 00:00
claudius:~$ ssh caligula.dinomite.net
Last login: Sat May 9 10:32:30 2009 from claudius.csh.rit.edu
Caligula:~$ cat id_dsa.pub >> .ssh/authorized_keys
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.):
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
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 befinden chmod 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.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 .
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:
remote=server1 server2 server3 server4
for r in $remote; do echo connecting to $r; tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh $r "tar zxf -; chmod 700 .ssh" ; done
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:
tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh YOUR_SERVER_NAME_HERE "tar ztvf -; chmod 700 .ssh"
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.