Ich richte automatisch die SSH-Anmeldung ein, ohne ein Passwort für einen Server einzugeben.
cd ~/.ssh
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub tim@server1
Es funktioniert auf dem Server.
Später habe ich dasselbe auf einem anderen Server gemacht.
ssh-copy-id -i ~/.ssh/id_rsa.pub tim@server2
Sofort ich ssh tim@server2
, aber es erfordert immer noch mein Passwort. Habe ich etwas falsch gemacht? Was sind mögliche Gründe, warum ich mich auf dem zweiten Server nicht erfolgreich eingerichtet habe? (Beachten Sie, dass auf dem zweiten Server Kerberos und das Andrew-Dateisystem ausgeführt werden.)
$ ssh -v tim@server2
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to server2 [...] port 22.
debug1: Connection established.
debug1: identity file /home/tim/.ssh/id_rsa type 1
debug1: identity file /home/tim/.ssh/id_rsa-cert type -1
debug1: identity file /home/tim/.ssh/id_dsa type -1
debug1: identity file /home/tim/.ssh/id_dsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ecdsa type -1
debug1: identity file /home/tim/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ed25519 type -1
debug1: identity file /home/tim/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<3072<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA xxx
debug1: Host 'server2' is known and matches the RSA host key.
debug1: Found key in /home/tim/.ssh/known_hosts:70
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Trying private key: /home/tim/.ssh/id_dsa
debug1: Trying private key: /home/tim/.ssh/id_ecdsa
debug1: Trying private key: /home/tim/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
Password:
Ich habe Anthons Methode zur Verwendung von Diffie-Hellman-Schlüsseln ausprobiert, aber ich werde trotzdem nach meinem Passwort gefragt.
$ cd ~/.ssh
$ ssh-keygen -t dsa
$ ssh-copy-id -i ~/.ssh/id_dsa.pub tim@server2
$ ssh -v tim@server2
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to server2 [...] port 22.
debug1: Connection established.
debug1: identity file /home/tim/.ssh/id_rsa type 1
debug1: identity file /home/tim/.ssh/id_rsa-cert type -1
debug1: identity file /home/tim/.ssh/id_dsa type 2
debug1: identity file /home/tim/.ssh/id_dsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ecdsa type -1
debug1: identity file /home/tim/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ed25519 type -1
debug1: identity file /home/tim/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<3072<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA ...
debug1: Host 'server2' is known and matches the RSA host key.
debug1: Found key in /home/tim/.ssh/known_hosts:70
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/tim/.ssh/id_dsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Trying private key: /home/tim/.ssh/id_ecdsa
debug1: Trying private key: /home/tim/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
Password:
server2
verwendet Andrew Dateisystem. Bedeutet das, dass mein Zuhause nicht bereitgestellt wird, bevor die Anmeldung abgeschlossen ist? Wie kann ich es für Ihre Frage herausfinden?tim
Home-Verzeichnisses sehen können.Antworten:
Sie erwähnen, dass der zweite Server das Andrew File System (AFS) verwendet.
Ich habe damit nicht gearbeitet, aber nach meinem Verständnis ist AFS ein Kerberos-gesichertes Dateisystem, für dessen Funktion ein Kerberos-Ticket erforderlich ist. Das bedeutet, dass Sie im Kerberos-Bereich Ihrer Site angemeldet sein müssen, um auf Ihr Home-Verzeichnis zugreifen zu können.
Wenn Sie sich mit einem Kennwort anmelden,
server2
wird es wahrscheinlich so eingerichtet, dass Sie sich über PAM bei Ihrem Kerberos-Realm anmelden. Wenn Sie jedoch SSH-Schlüssel verwenden, erhalten Sieserver2
nicht die erforderlichen Informationen, und Sie können nicht auf Ihr Home-Verzeichnis zugreifen.Glücklicherweise
ssh -v
können wir aus der Ausgabe in Ihrer Frage schließen, dass auf Ihrem Server dieGSSAPI
Authentifizierung aktiviert ist. Dies sollte es Ihnen ermöglichen, sich ohne Passwort anzumelden, vorausgesetzt, Sie haben ein gültiges Kerberos-Ticket für Ihren Realm. Mach Folgendes:Melden Sie sich bei an
server2
und führen Sie dasklist
Programm aus. Dies gibt etwas in der folgenden Richtung zurück:Suchen Sie nach der Zeile, die mit beginnt
Default principal:
. Hier erfahren Sie, was Ihr Kerberos-Prinzipal ist (im obigen Beispiel[email protected]
). Schreib das auf. Beachten Sie, dass es sich nicht um eine E-Mail-Adresse handelt und dass zwischen Groß- und Kleinschreibung unterschieden wird. dh der Auftraggeber endet mitEXAMPLE.ORG
, nichtexample.org
.kinit
den Namen Ihres Principals aus (im obigen Beispiel alsokinit [email protected]
). Wenn alles gut geht, werden Sie beimklist
erneuten Ausführen feststellen, dass sich auf Ihrem lokalen Computer ein Ticket-Cache befindet.ssh -K server2
, sollten Sie sich anmelden können und das System sollte nicht nach einem Kennwort fragen.Bitte beachten Sie, dass ein Ticket-Cache aufgrund der Funktionsweise von Kerberos nur eine begrenzte Gültigkeit hat. Es ist nicht möglich, einen Ticket-Cache anzufordern, dessen Gültigkeit länger ist als vom Realm-Administrator konfiguriert (normalerweise etwa 10 Stunden). Sobald Ihr Ticket abgelaufen ist, müssen Sie es
kinit
erneut ausführen und Ihr Passwort erneut eingeben.quelle
krb5-user
Paket.Sie sollten versuchen, eine Verbindung zu server2 herzustellen mit:
server1
Wenn Sie eine Verbindung herstellen, erfahren Sie genau, wo sich die beiden Server unterscheiden.Höchstwahrscheinlich gibt es bei
/etc/ssh/sshd_config
beiden Maschinen einen Unterschied . woserver2
oder bei Ihnen~/.ssh
sind Zugänglichkeitsprobleme (nicht ausreichend eingeschränkt).An der
-v
Ausgabe können Sie erkennen, dass Sie einen privaten RSA-Schlüssel zur Überprüfung gegen (in/home/tim/.ssh/id_rsa
) anbieten , aber es sieht so aus, als observer2
nur Diffie-Hellman unterstützt wird (und versucht,/home/tim/.ssh/id_dsa
was wahrscheinlich nicht einmal vorhanden ist).quelle
~/.ssh
auf dem Server tatsächlich Ihre autorisierten Schlüssel installiert sind (~/.ssh/authorized_keys
). Dann könnten Sie versuchen,ssh-keygen
ein Diffie-Hellman-Schlüsselpaar zu generierenssh-keygen -t dsa
und dieses zu kopieren.~/.ssh/authorized_keys
dem Server befindet sich eine Datei . Bedeutet das, dass die autorisierten Schlüssel installiert sind? (2) Wie soll ich das generierte Diffie-Hellman-Schlüsselpaar auf den Server kopieren? vonscp ~/.ssh/id_dsa.pub tim@server2:~/.ssh/authorized_keys
? Wird das~/.ssh/authorized_keys
auf dem Server überschrieben ?Fügen Sie den folgenden Eintrag in den Clientcomputer ein, von dem aus Sie ssh ausführen möchten.
Konfigurationsdatei:
/etc/ssh/ssh_config
Danach können Sie zur Maschine ssh.
Wenn Sie keine Bearbeitungsberechtigungen für diese Datei haben, können Sie auch hinzufügen
to
~/.ssh/config
(erstelle diese Datei, wenn sie nicht existiert)quelle