ssh verwendet ~ / .ssh / config nicht mehr

20

Ich kann nichts, was ich konnte. Nach ein wenig Graben fand ich heraus, dass es nicht ssh config aus meinem Home-Verzeichnis liest.

$ ssh -xvvv server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
(...)

Wenn auf einem identischen Computer eines Freundes alles funktioniert, sieht es so aus:

$ ssh -xvvv server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/kuba/.ssh/config
(...)

Es hat früher funktioniert und mir ist nichts bekannt, was ich hätte tun können, um dieses Problem zu verursachen. Wie könnte dies passieren und wie kann es behoben werden?

In dem von tike angegebenen Dokumentationslink heißt es:

Aufgrund des Missbrauchspotenzials muss diese Datei über strenge Berechtigungen verfügen: Lesen / Schreiben für den Benutzer und für andere nicht zugänglich.

Meine Berechtigungen sind:

$ ls -la ~/.ssh
total 80
drwx------+ 42 kuba  1029   1428 Jul  1 16:33 ..
-rwx------   1 kuba  1029   1528 May 15 13:07 config
(...)

Ich denke, dass das Problem mit einer Verwirrung über Ausgangsverzeichnis sein könnte. Wenn ich die lokale Konfigurationsdatei erzwinge, beginnt sie zu arbeiten und beginnt dann plötzlich zu lesen/nas/kuba

$ ssh -xvvvF ~/.ssh/config server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/kuba/.ssh/config
debug1: /Users/kuba/.ssh/config line 1: Applying options for *
debug1: /Users/kuba/.ssh/config line 39: Applying options for bio
debug2: ssh_connect: needpriv 0
debug1: Connecting to XXXX [YYYY.YYY.YYY.YYY] port 22.
debug1: Connection established.
debug1: identity file /nas/kuba/.ssh/id_dsa type -1
                      ^^^^^^^^^^

Aber mein Heimatverzeichnis scheint in Ordnung zu sein:

$ cd ~; pwd
/Users/kuba
$ echo $HOME
/Users/kuba
Kuba
quelle
4
Ich konnte ein Problem umgehen. Ich habe den Inhalt von ~ / .ssh nach /nas/kuba/.ssh kopiert. Es ist also tatsächlich ein Problem damit, dass ssh plötzlich das falsche Home-Verzeichnis verwendet, was wahrscheinlich kein wirkliches ssh-Problem ist.
Kuba
Dieser letzte Kommentar wäre eine sehr nützliche Information, um die Frage zu bearbeiten.
David Z
Ihre Ausgabe zeigt an, dass Sie DSA verwenden. Ich würde einen Weg finden, zu RSA zu wechseln, da es das Beste / Neueste ist und ich glaube, dass DSA kaputt ist.
Trysis
3
@Kuba Soweit ich das beurteilen kann sshignoriert die HOMEUmgebungsvariable. Es ist eine schlechte Praxis zu ignorieren HOME, scheint es das ist , was der sshFall ist. Wenn es nicht verwendet wird HOME, ist die einzige Alternative, die mir bekannt ist, es von der Website nachzuschlagen uid. Wenn Sie zwei Einträge /etc/passwdmit identischen Einträgen haben uid, werden beide dieselbe .ssh/configDatei verwenden, auch wenn sie ein anderes Zuhause haben.
Kasperd
1
@kasperd, das sollte eine Antwort sein. Es ist der einzige Breadcrumb auf dieser Seite, der in meiner Situation geholfen hat . Vielen Dank!
Wildcard

Antworten:

14

Sie scheinen zwischen benutzerspezifischem und globalem ssh_config gefangen zu sein.

Bitte überprüfen Sie die Berechtigungseinstellungen der Konfigurationsdatei Ihres Benutzers ( ~/.ssh/config) und Ihrer systemweiten Konfigurationsdatei ( /etc/ssh/ssh_config), um weitere Einzelheiten zu erfahren.

Mehr dazu können Sie hier lesen . Praktischerweise sollten sich alle Dateien in Ihrem benutzerbasierten .sshVerzeichnis auf 600 und die configDatei auf 644 befinden. Sie können dies mit den folgenden Befehlen in Ihrem Ausgangsverzeichnis einstellen:

chmod 600 ~/.ssh/* 
chmod 644 ~/.ssh/config
ähnlich
quelle
Ich verstehe aus dem Dokument, dass zuerst die Konfiguration aus meinem Ausgangsverzeichnis und später aus dem globalen Verzeichnis (/ etc / ssh / ssh_config) gelesen werden sollte. Die Frage ist, warum meine lokale Konfiguration nicht übernommen wird.
Kuba
aktualisierte Antwort oben
Tike
Ich habe es versucht. Nichts hat sich verändert. Ich habe meine Frage mit mehr Details aktualisiert.
Kuba
Wenn Sie die obige Frage während der Bearbeitung nicht drastisch geändert haben: debug1: /Users/kuba/.ssh/config Zeile 1: Anwenden von Optionen für * debug1: /Users/kuba/.ssh/config Zeile 39: Anwenden von Optionen für bio its reading config, und Ihr Konfigurationsplatzhalter scheint eine Rolle zu spielen. Ich würde die einfache Konfigurationsdatei behalten, um sie zuerst mit dem definierten Port und dem Zielserver zu testen.
Tike
Eigentlich habe ich die Frage so drastisch geändert, dass ich sie wahrscheinlich schließen sollte. Es scheint, dass ssh ein anderes Verzeichnis als meinen Heimordner behandelt. Etwas, das weder ~ noch $ HOME ist.
Kuba
3

Überprüfen Sie die Berechtigungen

ls -lsd ~/.ssh

und

ls -ls ~/.ssh/*

Wenn die Berechtigungen schlecht sind, versucht der ssh-Client nicht, daraus zu lesen

Mike
quelle
0 drwx ------ 9 kuba /Users/kuba/.ssh 8 -rwx ------ 1 kuba /Users/kuba/.ssh/config sieht so aus, als ob ich der Besitzer von allen bin
Kuba
@ Kuba versuchen mit ls -la ~ / .ssh /
c4f4t0r
ls -la ~ / .ssh total 80 drwx ------ 9 kuba 1029 306 Jul 1 16:33. drwx ------ + 42 kuba 1029 1428 1. Juli 16:33 .. -rw-r - r-- 1 kuba 1029 406 7. Mai 14:53 authorized_keys -rwx ------ 1 kuba 1029 1528 15. Mai 13:07 config -rwx ------ 1 kuba 1029 1675 7. Mai 14:53 id_rsa -rwx ------ 1 kuba 1029 406 7. Mai 14:53 id_rsa.pub -rw-r-- r-- 1 kuba 1029 16049 22. Mai 09:36 known_hosts
Kuba
@Sind Sie sicher, dass Ihr Home-User-Verzeichnis nicht geöffnet werden soll?
c4f4t0r
2
Das + da drüben ... sind das nicht ACLs? Das könnte der Schuldige sein?
Jorge Suárez de Lis
0

Ich hatte das gleiche Problem und konnte es beheben, indem ich das + x-Flag in meinem ~/.sshVerzeichnis (0700) und gleichzeitig 0600 aktivierte ~/.ssh/config.

dAngelov
quelle
0

Für das, was es wert ist, hatte ich das gleiche Problem und habe es behoben, indem ich ssh dazu gebracht habe, den .sshOrdner neu zu erstellen (einfach umbenennen)ssh einen ssh-Befehl und führe ihn aus) und anschließend die benötigten Dateien mit den entsprechenden Berechtigungen kopierte. (config mit 600).

Anscheinend wird ssh misstrauisch, wenn der Ordner .sshso geändert wird, dass er ...

Capstain
quelle
0

SSH liest die lokale Konfiguration nicht, wenn es sich um ein von NFS eingehängtes Dateisystem handelt. Dies ist eine Überprüfung wert, da alle Berechtigungen in Ordnung sein können und SSH (mindestens Version 6.6) keinen Hinweis darauf gibt, warum die Benutzerkonfiguration nicht gelesen wird. (Es wird jedoch von einem NFS-Volume gelesen, wenn Sie die -FOption verwenden.)

Curt J. Sampson
quelle
0

Auf MacOs ist das gleiche Problem aufgetreten. Als ich mir die Debug-Informationen eines manuellen Logins (ssh @) ansah, stellte ich fest, dass ssh anscheinend mein Home-Verzeichnis war/srv/home/<userid> und nach dem suchte.ssh Verzeichnis hielt , und ignorierte es/Users/<userid>/.ssh/

Es hat wahrscheinlich etwas mit der Einrichtung der Macs auf eine bestimmte Weise zu tun, aber ich würde empfehlen, dies zu überprüfen sshund das Betriebssystem zu vereinbaren, wo sich das Home-Verzeichnis befindet;)

chw21
quelle
0

Beachten Sie, wie 'Kasperd' in seinem Kommentar zu der Frage anzeigte, dass ssh nicht unbedingt nach '$ {HOME} /. Ssh / config' gesucht wird. Wie herausgefunden wurde, ist es wichtig, tiefer zu graben und zu erfahren, wo sich das Ausgangsverzeichnis zum Zeitpunkt der Anmeldung befand und bevor ein neues Ausgangsverzeichnis erstellt wurde.

Der Hinweis zum Durchschauen der Ausgabe von ssh -xvvvF ~/.ssh/config server war sehr aufschlussreich, um genau diese Frage zu beantworten. Auf einem System, auf dem zwei verschiedene Benutzernamen dieselbe UID in der Datei '/ etc / passwd' haben, ist dieses Problem aufgetreten. Die beiden Benutzer haben unterschiedliche HOME-Verzeichnisse in '/ etc / passwd'.

In einem solchen Szenario stellt sich heraus, dass, wenn einer als zweiter Benutzer mit einer doppelten UID in der Datei '/ etc / passwd' angemeldet ist, das Ausgangsverzeichnis sshdes ersten Benutzers mit einer übereinstimmenden UID des Benutzers verwendet, der das SSH ausführt Befehl.

Zugegeben, dieser Anwendungsfall ist ziemlich seltsam und wird den meisten Leuten nicht helfen, aber es ist tatsächlich passiert, und diese Frage / Antwort hat zur Lösung eines Problems beigetragen.

kbulgrien
quelle
0

Dies wurde durch Dateiberechtigungseinstellungen verursacht.

Überprüfen Sie Ihre .sshVerzeichnis- und Dateiberechtigungen. Überprüfen Sie auch die Berechtigungseinstellungen für das Ausgangsverzeichnis.

Für mich möchte ich nicht, dass andere meine persönlichen Dateien sehen, also entferne ich die xErlaubnis meines Heimatverzeichnisses. Was dazu führt, dass ssh autorisierte Schlüssel auf den falschen Weg findet.

Eine Möglichkeit, dies zu beheben, bestand darin, einen anderen Berechtigungspfad festzulegen /etc/ssh/sshd_config, zum Beispiel:

AuthorizedKeysFile .ssh / authorized_keys / etc / ssh / authorized_keys

dann kopiere deine Kneipe nach /etc/ssh/authorized_keys, arbeitete für mich.

Jay
quelle