ssh usa un directorio de inicio incorrecto en 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

¿Alguna idea de por qué ssh no utiliza la variable de entorno $ HOME cuando intenta localizar ~ / .ssh?

(editar: formato fijo)


fuente

Respuestas:

9

Echa un vistazo a /etc/passwd. Asegúrese de que la entrada allí coincide con su directorio de inicio esperado. Es el penúltimo campo para la entrada de su usuario.

Ronald Blaschke
fuente
4

Si su $HOMEvariable está configurada, pero ssh no la reconoce, ponga esta línea en /etc/nsswitch.conf:

db_home: /%H

Eso establecerá el directorio de inicio de Cygwin sin requerir que exista un archivo / etc / passwd.

Oliver Crow
fuente
Me he fijado HOMEa %USERPROFIEL%las variables de entorno antes de instalar el cygwin. Entonces ... / home / <myusername> no se ha creado ( /etc/passwd cannot be found). Y no puede usar la clave ssh en% USERPROFILE%. db_home: /%HSolucione el problema perfectamente. ¡Muchas gracias!
Marslo
2

En /etc/nsswitch.conf:

db_home:  windows

Consulte la configuración db_home . Esto le dice a Cygwin que solo use el %USERPROFILE%directorio de Windows como Cygwin $ HOME.

Esto es necesario si, por ejemplo, desea compartir las mismas claves SSH entre git (GitHub Enterprise) y SSH con varios sistemas locales Unix / Linux.

La configuración %HOME%en el nivel del sistema operativo no funcionó (aunque $HOMEen bash refleja correctamente la configuración).

Puede ver en la pregunta original que SSH está intentando actualizar el directorio de inicio de Windows, que en la versión anterior de Windows de Vidar es C:\Documents and Settings\vidar kongsli. En las versiones actuales (7+, creo), el equivalente es C:\Users\%USERNAME%(o, si Windows no está instalado en C :, %SystemDrive%\Users\%USERNAME%).

Charlie Reitzel
fuente
0

¿Se HOMEexporta la variable ? Intenta: export HOMEluego sshotra vez.

Greg Hewgill
fuente
0

Establecer db_homeen /etc/nsswitch.confel camino a su hogar. Este es el método recomendado por MSYS2.

Agregar una HOMEvariable de entorno también funciona .

Git-para-Windows incluye enven db_home, lo que debería leer su HOMEvariable de fiesta, sin embargo, es poco fiable .

VarunAgw
fuente
1
¿Cómo editar? ¿En qué estableciste db_home?
Andrew Schulman
@ AndrewSchulman ¿Al directorio que quiero como mi directorio personal?
VarunAgw
1
¡Guauu! Esta es mucha información útil. Gracias por editar @ go2null :)
VarunAgw
Esta respuesta en realidad no enumera lo que recomienda el error vinculado "recomendado". El error vinculado dice:db_home: windows cygwin desc
Gordon