ssh utilise un mauvais répertoire personnel dans 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

Une idée pourquoi ssh n'utilise pas la variable d'environnement $ HOME lorsqu'il essaie de localiser ~ / .ssh?

(modifier: formatage fixe)

ssh  cygwin 

Réponses:


9

Jetez un oeil à /etc/passwd. Assurez-vous que l'entrée y correspond à votre répertoire personnel attendu. Il s'agit de l'avant-dernier champ de l'entrée de votre utilisateur.


4

Si votre $HOMEvariable est définie, mais que ssh ne la reconnaît pas, mettez cette ligne dans /etc/nsswitch.conf:

db_home: /%H

Cela définira le répertoire personnel de Cygwin sans nécessiter l'existence d'un fichier / etc / passwd.


Je l' ai mis HOMEà %USERPROFIEL%des variables d'environnement avant l'Cygwin installé. Donc ... / home / <nomutilisateur> n'a pas été créé ( /etc/passwd cannot be found). Et ne peut pas utiliser la clé ssh dans% USERPROFILE%. db_home: /%Hrésoudre parfaitement le problème. Merci beaucoup!
Marslo

2

Dans /etc/nsswitch.conf:

db_home:  windows

Voir le paramètre db_home . Cela indique à Cygwin d'utiliser simplement le %USERPROFILE%répertoire Windows comme Cygwin $ HOME.

Cela est nécessaire si, par exemple, vous souhaitez partager les mêmes clés SSH entre git (GitHub Enterprise) et SSH avec divers systèmes Unix / Linux locaux.

Le réglage %HOME%au niveau du système d'exploitation n'a pas fonctionné (même si $HOMEdans bash reflète correctement le paramètre).

Vous pouvez voir dans la question d'origine que SSH essaie de mettre à jour le répertoire de base de Windows, qui est dans l'ancienne version de Windows de Vidar C:\Documents and Settings\vidar kongsli. Dans les versions actuelles (7+, je pense), l'équivalent est C:\Users\%USERNAME%(ou, si Windows n'est pas installé sur C :, %SystemDrive%\Users\%USERNAME%).


0

La variable est-elle HOMEexportée? Essayez: export HOMEpuis à sshnouveau.


0

Mettre db_homedans /etc/nsswitch.confle chemin de votre maison. Il s'agit de la méthode recommandée par MSYS2.

Ajout d' une HOMEvariable d'environnement également fonctionne .

Git-for-Windows inclut envdans db_home, ce qui devrait lire votre HOMEvariable bash, cependant, il est peu fiable .


1
Comment éditer? À quoi avez-vous défini db_home?
Andrew Schulman

@AndrewSchulman Vers le répertoire que je veux comme répertoire personnel?
VarunAgw

1
Hou la la! C'est beaucoup d'informations utiles. Merci d'avoir édité @ go2null :)
VarunAgw

Cette réponse ne répertorie pas réellement ce que recommande le bogue lié "recommandé". Le bug lié dit:db_home: windows cygwin desc
Gordon
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.