Ich weiß, dass es hier Dutzende von Fragen gibt, wie man eine Verbindung zu einem SSH-Server herstellt, ohne jedes Mal Ihr Passwort einzugeben , und die Antwort lautet immer "Verwenden Sie einen öffentlichen Schlüssel". Nun, ich befinde mich in einem seltenen Fall, in dem das wirklich keine Option ist. Aus irgendeinem unerklärlichen Grund ist der OpenSSH-Dämon auf dem Server, mit dem ich eine Verbindung herstellen möchte, konfiguriert
RSAAuthentication no
PubkeyAuthentication no
in /etc/ssh/sshd_config
. Ich habe keinen Administratorzugriff auf den Server, daher kann ich diese oder andere Serverkonfigurationsoptionen nicht ändern. (Ich habe natürlich die volle Kontrolle über die Client-Konfiguration: OpenSSH 5.8 unter Linux.)
Was sind meine Optionen und insbesondere die sicherste Option, um zu vermeiden, dass ich mein Kennwort jedes Mal eingeben muss, wenn ich SSH auf diesen Server übertragen möchte? Ich halte meine eigenen Computer ziemlich gut geschützt. Nehmen wir also an, dass die Sicherheitsrisiken beim Speichern des Kennworts in einer Datei auf dem Client akzeptabel gering sind, falls dies tatsächlich erforderlich ist.
Die anderen Authentifizierungsmethoden, die der Server akzeptieren kann, sind offensichtlich die GSS-API (von der ich nichts weiß), die interaktive Tastatur (von der ich auch nichts weiß) und das Kennwort. Hier sind einige relevante Konfigurationsoptionen:
#ChallengeResponseAuthentication yes
#KerberosAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
#UsePAM no
und hier ist eine debug ( -vv
) - Ablaufverfolgung:
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
/etc/krb5.keytab
? GSSAPI (Kerberos) kann einfach clientseitig eingerichtet werden. Ich müsste allerdings nach dem Hostnamen des Servers fragen. (Auch:keyboard-interactive
ist sehr ähnlichpassword
, außer nicht auf eine "Passwort:" Eingabeaufforderung beschränkt.)/etc/krb5.keytab
, aber es hat/etc/krb5/krb5.keytab
. Ich habe keinen Zugriff auf die Inhalte. Der Servername lautetsftp.pass.psu.edu
(ich glaube nicht, dass es schädlich ist, diesen Namen herauszugeben), wenn er Ihnen bei der Erläuterung des Verfahrens hilft.Antworten:
In diesem Fall ist das Schreiben (oder bessere Aufzeichnen) eines Erwartungsskripts eine Ihrer Optionen.
Jedes System ist anders, so dass es kein Skript gibt, aber mit Autoexpect ist es sehr einfach, ein Skript für diesen Zweck aufzuzeichnen.
quelle
Nach den bisher gesammelten Informationen
sftp.pass.psu.edu
unterstützt der Server die Kerberos 5-Authentifizierung (GSSAPI) und befindet sich imdce.psu.edu
Bereich.Kerberos ist in Netzwerken mit vielen Servern und Workstations sehr verbreitet. Viele große Bildungseinrichtungen haben es eingerichtet. Einer der Vorteile gegenüber der Authentifizierung mit öffentlichem Schlüssel besteht darin, dass ein einzelner
kinit
Computer automatisch Anmeldeinformationen für alle Computer im Kerberos-Bereich bereitstellt, ohne die öffentlichen Schlüssel auf jeden Computer kopieren zu müssen. Ein weiterer Grund ist die Protokollunterstützung. Dieselben Kerberos-Anmeldeinformationen können mit über 30 Protokollen (E-Mail, Dateisysteme, Datenbanken ...) verwendet werden, nicht nur mit SSH.(In Bezug auf "ahnungslose Windows-Administratoren": Der
dce.psu.edu
Bereich scheint tatsächlich auf Active Directory zu basieren und von Windows-Servern gehostet zu werden.)Führen Sie die folgenden Schritte aus:
Melden Sie sich bei Kerberos an. (Die Tools
kinit
undklist
können sich in "krb5-user" oder einem ähnlichen Paket befinden, sofern sie nicht bereits im System enthalten sind.)Wenn keine Fehler angezeigt werden, war die Anmeldung erfolgreich.
klist
sollte ein "krbtgt/dce.psu.edu@...
" Element anzeigen.Stellen Sie nun mit den
-vv
Optionen eine Verbindung zum SSH-Server her . Wenn die Authentifizierung erfolgreich ist, gut.Wenn dies nicht der Fall ist, müssen Sie möglicherweise Ihre
/etc/krb5.conf
Datei bearbeiten . Fügen Sie unter dem[domain_realm]
Abschnitt Folgendes hinzu:Mit den Standardeinstellungen für Krb5 sollte das in Nummer 1 erhaltene Ticket 10 Stunden gültig und bis zu einer Woche verlängerbar sein. Ich habe jedoch keine Möglichkeit, die Einstellungen zu überprüfen.
Wenn Sie das Passwort in einer Datei behalten möchten, sollte ein einfaches
kinit your_principal < password.txt
funktionieren, obwohl es nicht vollständig zuverlässig ist.Mit ist
ktutil
es möglich, anstelle des Passworts ein "Keytab" zur Verwendung zu erstellen .und melden Sie sich an mit:
quelle
ssh -vv
ähneln der von mir geposteten Ablaufverfolgung, außer dass ichdebug1: Unspecified GSS failure. Minor code may provide more information\n Server not found in Kerberos database
anstelle der Sache, dass die Cache-Datei für Anmeldeinformationen nicht gefunden wurde, etwas erhalte .host/sftp.pass.psu.edu
, aber sein richtiger Name hätte lauten sollenhost/lutz.cac.psu.edu
. Sie können dies128.118.2.85 sftp.pass.psu.edu
host/lutz.cac.psu.edu
undhost/sftp.pass.psu.edu
) in einem einzigen Keytab unterstützt. (Frühere Versionen verwendeten nur die erste.)/etc/hosts
wie vorgeschlagen bekomme ichdebug1: Unspecified GSS failure. Minor code may provide more information Generic error (see e-text)
. Nichts anderes in der Ausgabe ist für den Fehler relevant.Ich würde eine gemischte Lösung in Betracht ziehen, bei der Sie das Kennwort nur einmal eingeben und der Computer einen Socket zum Remote-SSH-Server verwaltet. Sie können diese Schritte ausführen, um das
ControlMaster
aus genau diesem Grund einzurichten.quelle
screen
zum Schutz der Schalen von Abschluss auf Verbindungsunterbrechung oder hangup.