ssh utilizza la home directory errata in 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

Qualche idea sul perché ssh non usi la variabile d'ambiente $ HOME quando cerca di localizzare ~ / .ssh?

(modifica: formattazione fissa)

ssh  cygwin 

Risposte:


9

Dai un'occhiata /etc/passwd. Assicurati che la voce corrispondente corrisponda alla tua home directory prevista. È il penultimo campo per l'inserimento dell'utente.


4

Se la tua $HOMEvariabile è impostata, ma ssh non la riconosce, inserisci questa riga /etc/nsswitch.conf:

db_home: /%H

Ciò imposterà la home directory di Cygwin senza richiedere l'esistenza di un file / etc / passwd.


Ho impostato HOMEa %USERPROFIEL%in variabili d'ambiente prima della Cygwin installato. Quindi ... / home / <mioutente> non sono stati creati ( /etc/passwd cannot be found). E non è possibile utilizzare la chiave ssh in% USERPROFILE%. db_home: /%Hrisolvere il problema perfettamente. Molte grazie!
Marslo,

2

In /etc/nsswitch.conf:

db_home:  windows

Vedi L'impostazione db_home . Questo dice a Cygwin di usare semplicemente la %USERPROFILE%directory di Windows come Cygwin $ HOME.

Ciò è necessario se, ad esempio, si desidera condividere le stesse chiavi SSH tra git (GitHub Enterprise) e SSH con vari sistemi Unix / Linux locali.

L'impostazione %HOME%a livello di sistema operativo non ha funzionato (anche se $HOMEin bash riflette correttamente l'impostazione).

Dalla domanda originale puoi vedere che SSH sta provando ad aggiornare la home directory di Windows, come nella versione precedente di Vidar di Windows C:\Documents and Settings\vidar kongsli. Nelle versioni attuali (7+, credo), l'equivalente è C:\Users\%USERNAME%(o, se Windows non è installato su C :, %SystemDrive%\Users\%USERNAME%).


0

La variabile viene HOMEesportata? Prova: export HOMEpoi di sshnuovo.


0

Situato db_homein /etc/nsswitch.confper il percorso a casa tua. Questo è il metodo raccomandato da MSYS2.

Anche l'aggiunta di una HOMEvariabile d'ambiente funziona .

Git-for-Windows include envin db_home, che dovrebbe leggere la HOMEvariabile bash, tuttavia non è affidabile .


1
Modifica come? A cosa hai impostato db_home?
Andrew Schulman,

@AndrewSchulman Alla directory che desidero come directory home?
VarunAgw,

1
Wow! Queste sono molte informazioni utili. Grazie per la modifica @ go2null :)
VarunAgw

Questa risposta in realtà non elenca ciò che raccomanda il bug collegato "consigliato". Il bug collegato dice:db_home: windows cygwin desc
Gordon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.