openSSH ignoriert die HOME env-Variable

1065
will

Ich habe versucht, das Could not create directoryProblem mit openSSH zu lösen, das über cygwin installiert wurde, und habe jede Lösung aus dem Internet ausprobiert, aber keine davon funktioniert.

Ich habe cygwin installiert, es scheint zu funktionieren. Ich habe openSSH installiert, das scheint auch zu funktionieren (ich kann SSH in andere Maschinen).

Ich habe den Ordner cygwin bin in den Ordner gesetzt path, so dass ich von der sshKommandozeile aus laufen kann, und das funktioniert auch. Aber jedes Mal, wenn ich es starte, wird mir der Fehler angezeigt:

Could not create directory '/home/will/.ssh' The authenticity of host 'blah (111.222.333.444)' can't be established. ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. Are you sure you want to continue connecting (yes/no)? 

Warum versucht es, dieses Verzeichnis zu verwenden? Ich habe das env eingestellt. Variable HOMEto %USERPROFILE%, es gibt die korrekte Position aus, wenn ich es wiederhole, und ich habe auch das .sshVerzeichnis erstellt und das ssh-keygenDing dort gemacht.

Ich habe irgendwo gelesen, dass ich ersetzen muß home/willin cygwin/etc/passwd, aber ich habe nicht diese Datei. Und wenn ich mkpasswd -les generiere, wird es mich nicht als Benutzer einschließen, so dass ich nichts ersetzen kann. Ich bin wirklich ratlos.

Was muss ich tun / einstellen, damit dies funktioniert?

3
Überprüfen Sie http://stackoverflow.com/questions/225764/safely-change-home-directory-in-cygwin Chris.C vor 8 Jahren 0
@ Chris.C Welche Antwort? Mein Benutzer erscheint nicht in der Datei, die von `mkpasswd` erstellt wurde. Wie kann ich dann das dort angegebene Home-Verzeichnis bearbeiten? will vor 8 Jahren 0

3 Antworten auf die Frage

2
matzeri

Wenn Sie in "/ usr / bin / ssh-user-config" nachschauen, werden Sie den Hinweis bemerken:

 csih_error_multi \ "There is no home directory set for you in the account database." \ 'Setting $HOME is not sufficient!' 

Ohne die Windows-Benutzerdatenbank zu berühren, können Sie ein anderes Zuhause am schnellsten definieren:

 mkpasswd -d -u "Your_Windows_User_Name" > /etc/passwd or mkpasswd -l -u "Your_Windows_User_Name" > /etc/passwd  

wahrscheinlich "wird". Da Ihr Benutzer lokal ist oder eine Domäne ist.

Und ändern Sie das vorletzte Feld "/ home / will" mit dem gewünschten Wert.

Zusätzliche Informationen zu Windows- und Cygwin-Benutzern:

https://cygwin.com/cygwin-ug-net/ntsec.html https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch 
1
Waqas Ilyas

Sie können / etc / ssh / ssh_config bearbeiten und die folgenden Eigenschaften hinzufügen:

IdentityFile /C/Users/username/.ssh/id_rsa UserKnownHostsFile /C/Users/username/.ssh/known_hosts 

Das druckt immer noch den Fehler, Could not create directory '/home/username/.ssh'.aber ansonsten funktioniert alles. Übrigens benutze ich msys2, aber theoretisch sollte dies auch für Sie funktionieren.

0
David C.

Vielen Dank an Matzeri für den Hinweis in / usr / bin / ssh-user-conifg. Als ich dort reinschaute, wurde mir klar, dass das Skript das Heimatverzeichnis durch einen Anruf an erhält getent passwd. Wenn ich das auf meinem System ausführen, sehe ich, dass sich das Ausgangsverzeichnis in / home befindet (das im Windows-Dateisystem in C: \ Cygwin64 \ home \ myusername übersetzt wird).

Mein aktuelles Windows-Basisverzeichnis (% USERDIR%) ist C: \ Users \ myusername. Cygwin sieht dies als / cygdrive / c / Users / myusername.

Ich entdeckte, dass ich als Alternative zum Erstellen einer / etc / passwd-Datei mein Windows-Ausgangsverzeichnis mit dem Ort verknüpfen kann, den Cygwin möchte:

cd /home rm -rf myusername ln -s /cygdrive/c/Users/myusername . 

Danach hat SSH kein Problem, das .ssh-Verzeichnis in meinem Windows-Stammverzeichnis zu lesen.