ssh ya no usa ~ / .ssh / config

20

No puedo decir nada de lo que pude. Después de un poco de excavación descubrí que no está leyendo ssh config desde mi directorio de inicio.

$ ssh -xvvv server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
(...)

Cuando se encuentra en una computadora idéntica de un amigo, donde todo funciona se ve así:

$ ssh -xvvv server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/kuba/.ssh/config
(...)

Funcionó antes y no sé nada de lo que podría haber hecho para causar este problema. ¿Cómo podría suceder esto y cómo solucionarlo?

En el enlace de documentación señalado por tike, indica que

Debido a la posibilidad de abuso, este archivo debe tener permisos estrictos: lectura / escritura para el usuario y no accesible para otros.

Mis permisos son:

$ ls -la ~/.ssh
total 80
drwx------+ 42 kuba  1029   1428 Jul  1 16:33 ..
-rwx------   1 kuba  1029   1528 May 15 13:07 config
(...)

Creo que el problema podría deberse a una confusión sobre el directorio de inicio. Cuando fuerzo el archivo de configuración local, comienza a funcionar y, de repente, comienza a leer/nas/kuba

$ ssh -xvvvF ~/.ssh/config server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/kuba/.ssh/config
debug1: /Users/kuba/.ssh/config line 1: Applying options for *
debug1: /Users/kuba/.ssh/config line 39: Applying options for bio
debug2: ssh_connect: needpriv 0
debug1: Connecting to XXXX [YYYY.YYY.YYY.YYY] port 22.
debug1: Connection established.
debug1: identity file /nas/kuba/.ssh/id_dsa type -1
                      ^^^^^^^^^^

Pero mi directorio de inicio parece estar configurado bien:

$ cd ~; pwd
/Users/kuba
$ echo $HOME
/Users/kuba
Kuba
fuente
44
Pude solucionar un problema. Copié el contenido de ~ / .ssh a /nas/kuba/.ssh. Entonces, en realidad, es un problema con ssh usar de repente el directorio de inicio incorrecto, lo que probablemente no sea realmente un problema de ssh.
Kuba
Ese último comentario sería información muy útil para editar en la pregunta.
David Z
Su salida indica que está utilizando DSA. Encontraría una manera de cambiar a RSA, ya que es el mejor / más nuevo y creo que DSA está roto.
trysis
3
@Kuba Por lo que puedo decir, sshignora la HOMEvariable de entorno. Es una mala práctica ignorar HOME, parece que eso es lo que sshhace. Si no se usa HOME, la única alternativa que conozco es buscarlo desde uid. Si tiene dos entradas /etc/passwdidénticas uid, ambas terminarían usando el mismo .ssh/configarchivo incluso si tuvieran un hogar diferente.
Kasperd
1
@kasperd, esa debería ser una respuesta. Es la única ruta de acceso en esta página que ayudó con mi situación. ¡Gracias!
Comodín el

Respuestas:

14

Parece estar atrapado entre ssh_config específico del usuario y global.

Verifique la configuración de permisos del archivo de configuración de su usuario ( ~/.ssh/config) y su archivo de configuración de todo el sistema ( /etc/ssh/ssh_config) para comprender con más detalles.

Puedes leer más sobre esto aquí . Prácticamente, todos los archivos en su .sshdirectorio basado en el usuario deben estar en 600, y el configarchivo debe estar en 644. Puede configurar esto con los siguientes comandos en su directorio de inicio:

chmod 600 ~/.ssh/* 
chmod 644 ~/.ssh/config
tike
fuente
Así que entiendo por el documento que primero debe leer la configuración de mi directorio de inicio, y más tarde desde el global (/ etc / ssh / ssh_config) La pregunta es: ¿por qué está omitiendo mi configuración local?
Kuba
respuesta actualizada arriba
tike
Lo intenté. Nada ha cambiado. Actualicé mi pregunta con más detalles.
Kuba
si no ha cambiado drásticamente la pregunta anterior durante la edición: debug1: /Users/kuba/.ssh/config línea 1: Aplicar opciones para * debug1: /Users/kuba/.ssh/config línea 39: Aplicar opciones para bio su configuración de lectura, y su comodín de configuración parece estar jugando un papel importante. Mantendría un archivo de configuración simple para probar primero con el puerto definido y el servidor dest.
tike
En realidad, cambié la pregunta drásticamente hasta el punto de que probablemente debería cerrarla. Parece que ssh está tratando otro directorio como mi carpeta de inicio. Algo que no es ~ ni $ HOME.
Kuba
3

verificar permisos

ls -lsd ~/.ssh

y

ls -ls ~/.ssh/*

Si los permisos son malos, entonces el cliente ssh no intentará leerlo

Micro
fuente
0 drwx ------ 9 kuba /Users/kuba/.ssh 8 -rwx ------ 1 kuba /Users/kuba/.ssh/config parece que soy el dueño de todos ellos
Kuba
@Kuba intenta con ls -la ~ / .ssh /
c4f4t0r
ls -la ~ / .ssh total 80 drwx ------ 9 kuba 1029 306 1 de julio 16:33. drwx ------ + 42 kuba 1029 1428 1 de julio 16:33 .. -rw-r - r-- 1 kuba 1029 406 7 de mayo 14:53 Authorizedkeys -rwx ------ 1 kuba 1029 1528 15 de mayo 13:07 config -rwx ------ 1 kuba 1029 1675 7 de mayo 14:53 id_rsa -rwx ------ 1 kuba 1029 406 7 de mayo 14:53 id_rsa.pub -rw-r-- r-- 1 kuba 1029 16049 22 de mayo 09:36 known_hosts
Kuba
@ ¿estás seguro, tu directorio de usuario doméstico no se abre?
c4f4t0r
2
Eso + por allá ... ¿no es eso ACL? Ese podría ser el culpable?
Jorge Suárez de Lis
0

Tuve el mismo problema y pude solucionarlo configurando el indicador + x en mi ~/.sshdirectorio (0700), y también configurando 0600 ~/.ssh/config.

dAngelov
fuente
0

Para lo que vale, tuve el mismo problema y lo arreglé haciendo ssh para crear nuevamente la .sshcarpeta (solo renombra sshy ejecuta algún comando ssh), y luego copié los archivos necesarios, con los permisos apropiados. (config con 600).

Aparentemente, ssh se vuelve sospechoso si la carpeta .sshse modifica de una manera que no aprueba ...

capstain
fuente
0

SSH no leerá la configuración local si está en un sistema de archivos montado en NFS. Vale la pena verificarlo porque todos los permisos pueden estar bien y SSH (al menos la versión 6.6) no le dará ninguna indicación de por qué no está leyendo la configuración del usuario. (Sin embargo, lo leerá de un volumen NFS si usa la -Fopción).

Curt J. Sampson
fuente
0

Encontré el mismo problema en MacOs. Al mirar la información de depuración de un inicio de sesión manual (ssh @), descubrí que aparentemente ssh pensaba que mi directorio de inicio estaba /srv/home/<userid>y estaba buscando el .sshdirectorio allí, e ignoré el que estaba en/Users/<userid>/.ssh/

Probablemente tenga algo que ver con el trabajo de configuración de las Mac de una manera específica, pero recomendaría verificar eso sshy el Sistema Operativo acuerda dónde está el directorio de inicio;)

chw21
fuente
0

Como 'kasperd' indicó en su comentario sobre la pregunta, tenga en cuenta que sshno necesariamente buscará '$ {HOME} /. Ssh / config'. Como se descubrió, es importante profundizar y aprender dónde estaba el directorio de inicio en el momento del inicio de sesión y antes de que se afirmara un nuevo HOME.

La sugerencia para mirar a través de la salida de ssh -xvvvF ~/.ssh/config serverfue muy perspicaz para ayudar a responder esta misma pregunta. Al encontrarse en un sistema donde dos nombres de usuario diferentes tienen el mismo UID en el archivo '/ etc / passwd', se encontró este problema. Los dos usuarios tienen diferentes directorios HOME configurados en '/ etc / passwd'.

En tal escenario, resulta que si uno está conectado como el segundo usuario con un UID duplicado en el archivo '/ etc / passwd', sshusa el directorio de inicio del primer usuario con un UID coincidente del usuario que ejecuta el SSH mando.

Por supuesto, este caso de uso es bastante extraño y no ayudará a la mayoría de las personas, pero en realidad sucedió, y este Q / A ayudó a resolver un problema.

kbulgrien
fuente
0

Esto fue causado por la configuración de permisos de archivo.

Verifique los .sshpermisos de su directorio y archivos, también verifique la configuración de permisos de su directorio de inicio.

Para mí, no quiero que otros vean mis archivos personales, por lo que elimino el xpermiso del directorio de mi casa. Lo que lleva a ssh a encontrar claves autorizadas para la ruta incorrecta.

Una forma de solucionar esto era establecer otra ruta de autoridad /etc/ssh/sshd_config, por ejemplo:

AuthorizedKeysFile .ssh / Authorizedkeys / etc / ssh / Authorizedkeys

luego copia tu pub a /etc/ssh/authorized_keys, funcionó para mí.

Arrendajo
fuente