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

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

(modifier: formatage fixe)


la source

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.

Ronald Blaschke
la source
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.

Oliver Crow
la source
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%).

Charlie Reitzel
la source
0

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

Greg Hewgill
la source
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 .

VarunAgw
la source
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