
He iniciado sesión en un servidor Linux (Debian Stretch) como root. Cuando ejecuto el cliente ssh como root, parece que el cliente ssh insiste en usarlo /root/.ssh/
como ubicación de todos los archivos de configuración y claves de ssh en lugar de ~/.ssh
:
$ id
uid=0(root) gid=0(root) groups=0(root)
$ export HOME=/srv/scratch/user
$ cd ~/.ssh
$ pwd
/srv/scratch/user/.ssh
$ ssh -vvv [email protected]
OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2t 10 Sep 2019
debug1: Reading configuration data /root/.ssh/config
debug1: /root/.ssh/config line 3: Applying options for example.com
debug1: Reading configuration data /etc/ssh/ssh_config
... more lines that never mention /srv/scratch/user/.ssh ...
¿Por qué el cliente ssh no utiliza el .ssh
directorio en /srv/scratch/user
?
Respuesta1
export HOME=/srv/scratch/user
ssh
no utiliza la HOME
variable de entorno para encontrar el directorio de inicio del usuario. llamagetpwuid()
y utiliza el directorio de inicio devuelto por eso. getpwuid()
devuelve la información del usuario desde /etc/passwd
o donde su sistema particular almacena información del usuario.
Puede hacer que ssh lea un archivo de configuración diferente usando el-F
opción:
-Fconfigfile
Especifica un archivo de configuración alternativo por usuario. Si se proporciona un archivo de configuración en la línea de comando, se ignorará el archivo de configuración de todo el sistema (/etc/ssh/ssh_config). El valor predeterminado para el archivo de configuración por usuario es ~/.ssh/config.
Puede especificar claves ssh usando-i
:
-iIdentity_file
Selecciona un archivo desde el cual se lee la identidad (clave privada) para la autenticación de clave pública. El valor predeterminado es ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 y ~/.ssh/id_rsa. Los archivos de identidad también se pueden especificar por host en el archivo de configuración. Es posible tener múltiples opciones -i (y múltiples identidades especificadas en los archivos de configuración). Si la directiva CertificateFile no ha especificado explícitamente ningún certificado, ssh también intentará cargar información del certificado desde el nombre de archivo obtenido agregando -cert.pub a los nombres de archivo de identidad.
Tenga en cuenta que si ejecuta un comando usando "~" para especificar un nombre de archivo, como este:
ssh -F ~/some/config/file ...
entonces el "~" será interpretado por su shell, no por ssh.