ssh verwendet in Cygwin das falsche Home-Verzeichnis

12
$ ssh [email protected]

Could not create directory'/cygdrive/c/Documents and Settings/vidar kongsli/.ssh'.
The authenticity of host 'login.somehost.no (...)' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.

$ set | grep HOME

HOME=/cygdrive/d/home/vidar
HOMEDRIVE=C:
HOMEPATH=/cygdrive/d/home/vidar

$ ls ~/.ssh

id_rsa  id_rsa.pub

Irgendeine Idee, warum ssh die Umgebungsvariable $ HOME nicht verwendet, wenn versucht wird, ~ / .ssh zu finden?

(edit: feste Formatierung)


quelle

Antworten:

9

Schau es dir an /etc/passwd. Stellen Sie sicher, dass der Eintrag dort mit Ihrem erwarteten Ausgangsverzeichnis übereinstimmt. Dies ist das vorletzte Feld für den Eintrag Ihres Benutzers.

Ronald Blaschke
quelle
4

Wenn Ihre $HOMEVariable gesetzt ist, aber ssh sie nicht erkennt, setzen Sie diese Zeile in /etc/nsswitch.conf:

db_home: /%H

Dadurch wird das Cygwin-Ausgangsverzeichnis festgelegt, ohne dass eine / etc / passwd-Datei vorhanden sein muss.

Oliver Crow
quelle
Ich habe festgelegt , HOMEum %USERPROFIEL%in Umgebungsvariablen vor der Cygwin installiert. Also ... / home / <meinbenutzername> wurde nicht erstellt ( /etc/passwd cannot be found). Und kann den SSH-Schlüssel in% USERPROFILE% nicht verwenden. db_home: /%HBeheben Sie das Problem perfekt. Danke vielmals!
Marslo
2

In /etc/nsswitch.conf:

db_home:  windows

Siehe Die Einstellung db_home . Dadurch wird Cygwin angewiesen, nur das Windows- %USERPROFILE%Verzeichnis als Cygwin $ HOME zu verwenden.

Dies ist beispielsweise erforderlich, wenn Sie dieselben SSH-Schlüssel zwischen Git (GitHub Enterprise) und SSH für verschiedene lokale Unix / Linux-Systeme freigeben möchten.

Die Einstellung %HOME%auf Betriebssystemebene funktionierte nicht (obwohl $HOMEin bash die Einstellung korrekt wiedergegeben wird).

Aus der ursprünglichen Frage geht hervor, dass SSH versucht, das Windows-Basisverzeichnis zu aktualisieren, das in Vidars älterer Windows-Version vorhanden ist C:\Documents and Settings\vidar kongsli. In den aktuellen Versionen (7+, denke ich) ist das Äquivalent C:\Users\%USERNAME%(oder, wenn Windows nicht auf C :, installiert ist %SystemDrive%\Users\%USERNAME%).

Charlie Reitzel
quelle
0

Wird die Variable HOMEexportiert? Versuchen Sie: export HOMEdann noch ssheinmal.

Greg Hewgill
quelle
0

Stellen Sie db_homein /etc/nsswitch.confauf dem Weg nach Hause. Dies ist die von MSYS2 empfohlene Methode.

Das Hinzufügen einer HOMEUmgebungsvariablen funktioniert ebenfalls .

Git-for-Windows enthält envin db_home, das Ihre HOMEBash-Variable lesen sollte , es ist jedoch unzuverlässig .

VarunAgw
quelle
1
Bearbeiten wie? Auf was hast du db_home eingestellt?
Andrew Schulman
@AndrewSchulman In das Verzeichnis, das ich als Home-Verzeichnis haben möchte?
VarunAgw
1
Beeindruckend! Dies sind viele hilfreiche Informationen. Vielen Dank für die Bearbeitung @ go2null :)
VarunAgw
Diese Antwort listet nicht auf, was der "empfohlene" verlinkte Fehler empfiehlt. Der verlinkte Bug lautet:db_home: windows cygwin desc
Gordon