ssh używa niewłaściwego katalogu domowego w Cygwin

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

Masz pojęcie, dlaczego ssh nie używa zmiennej środowiskowej $ HOME, gdy próbuje zlokalizować ~ / .ssh?

(edycja: poprawione formatowanie)


źródło

Odpowiedzi:

9

Spójrz na /etc/passwd. Upewnij się, że tam wpis pasuje do oczekiwanego katalogu domowego. To przedostatnie pole dla wpisu użytkownika.

Ronald Blaschke
źródło
4

Jeśli twoja $HOMEzmienna jest ustawiona, ale ssh jej nie rozpoznaje, wstaw tę linię /etc/nsswitch.conf:

db_home: /%H

Spowoduje to ustawienie katalogu domowego Cygwin bez konieczności istnienia pliku / etc / passwd.

Oliver Crow
źródło
Mam ustawione HOMEdo %USERPROFIEL%zmiennych środowiskowych przed zainstalowaniu Cygwin. Więc ... / home / <nazwa_użytkownika> nie została utworzona ( /etc/passwd cannot be found). I nie można użyć klucza ssh w% USERPROFILE%. db_home: /%Hnapraw problem idealnie. Wielkie dzięki!
Marslo,
2

W pliku /etc/nsswitch.conf:

db_home:  windows

Zobacz ustawienie db_home . To mówi Cygwin, aby po prostu używał %USERPROFILE%katalogu Windows jako Cygwin $ HOME.

Jest to konieczne, jeśli na przykład chcesz współdzielić te same klucze SSH między git (GitHub Enterprise) i SSH w różnych lokalnych systemach Unix / Linux.

Ustawienie %HOME%na poziomie systemu operacyjnego nie działało (nawet jeśli $HOMEbash poprawnie odzwierciedla ustawienie).

Z pierwotnego pytania widać, że SSH próbuje zaktualizować katalog domowy Windows, którym jest starsza wersja Vidara C:\Documents and Settings\vidar kongsli. W obecnych wersjach (chyba 7), odpowiednikiem jest C:\Users\%USERNAME%(lub, jeśli Windows nie jest zainstalowany na C :, %SystemDrive%\Users\%USERNAME%).

Charlie Reitzel
źródło
0

Czy zmienna jest HOMEeksportowana? Spróbuj: export HOMEpotem sshjeszcze raz.

Greg Hewgill
źródło
0

Ustaw db_homew /etc/nsswitch.confcelu drodze do domu. Jest to metoda zalecana przez MSYS2.

DziałaHOME także dodanie zmiennej środowiskowej .

Git-for-Windows zawiera envw db_home, który powinien odczytać HOMEzmienną bash, jednak nie jest to wiarygodne .

VarunAgw
źródło
1
Jak edytować? Na co ustawiłeś db_home?
Andrew Schulman,
@AndrewSchulman Do katalogu, który chcę jako mój katalog domowy?
VarunAgw
1
łał! To wiele przydatnych informacji. Dzięki za edycję @ go2null :)
VarunAgw
Ta odpowiedź nie podaje w rzeczywistości tego, co poleca „zalecany” połączony błąd. Połączony błąd mówi:db_home: windows cygwin desc
Gordon,