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


12
$ ssh usaname@login.somehost.no

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)

ssh  cygwin 

Odpowiedzi:


9

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


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.


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%).



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 .


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.