GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo especifico el archivo clave para sshfs?

Fíjate en esta opción:

-o SSHOPT=VAL opciones ssh (ver man ssh_config)

Y si miras man ssh_config , hay una opción para establecer la ruta a su archivo de clave privada, llamada IdentityFile , para que puedas hacer esto:

sshfs -oIdentityFile=/abs/path/to/id_rsa server: path/to/mnt/point

La ruta al archivo de identidad debe ser una ruta absoluta.


En principio funciona así (como root, o usa sudo ):sshfs -o default_permissions,nonempty,IdentityFile=/home/USER/.ssh/id_rsa [email protected]:PATH /mnt/mountpoint

Reemplazar USER con el usuario que está en el authorized_keys archivo del servidor, SERVER con el nombre del servidor (o IP, como 192.168.0.11), SRVUSER con el usuario en el servidor (por ejemplo, root, que no se recomienda pero es posible y, a veces, necesario; configure su /etc/ssh/sshd_config en el servidor correctamente para esto, es decir, directivas PermitRootLogin y PasswordAuthentication ). También sustituya /mnt/mountpoint en consecuencia.

La opción -o nonempty permite montar /mnt/mountpoint cuando este directorio no está vacío. Tengo que usar esto ya que guardo el archivo .unmounted en este directorio para ver si está montado o no, así que si test -e /mnt/mountpoint/.unmounted devuelve correctamente (es decir, el archivo .unmounted existe en /mnt/mountpoint), no está montado.

Un ejemplo real:

  • nombre del servidor "servidor principal"
  • montar el directorio /home en el servidor
  • mi punto de montaje en el sistema local es /mnt/homeserver
  • el usuario "steve" tiene la clave privada

ssh [email protected] como usuario steve trabajó.

sshfs -o default_permissions,nonempty,IdentityFile=/home/steve/.ssh/id_rsa [email protected]:/home /mnt/homeserver (como raíz)

Esto no funcionó , recibí el mensaje de error:read: Connection reset by peer

Solución: Obtenga resultados más detallados agregando -o debug .

# sshfs -o default_permissions,nonempty,IdentityFile=/home/steve/.ssh/id_rsa,debug 
[email protected]:/home /mnt/homeserver
FUSE library version: 2.9.8
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStT0123
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /root/.ssh/known_hosts:2
ECDSA host key for homeserver has changed and you have requested strict checking.
Host key verification failed.
read: Connection reset by peer

Y de repente es mucho más fácil de arreglar. Porque las claves sshd se volvieron a crear desde la última sesión pero /root/.ssh/known_hosts en el sistema local todavía tiene las claves antiguas, no funciona. La solución, en mi caso, fue simplemente eliminar la línea que comienza con homeserver de /root/.ssh/known_hosts usando un editor (como nano ). Ahora el montaje con sshfs funciona. En el primer montaje, se debe reconocer la nueva clave:

# mount /mnt/homeserver
The authenticity of host 'homeserver (192.168.0.11)' can't be established.
ECDSA key fingerprint is SHA256:aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsS/1234.
Are you sure you want to continue connecting (yes/no)? yes

Por cierto, esta es la línea en /etc/fstab :

[email protected]:/home  /mnt/homeserver  fuse.sshfs noauto,nonempty,default_permissions,IdentityFile=/home/steve/.ssh/id_rsa  0 0

Entonces, incluso si es otra cosa, intente -o debug primero. Será de gran ayuda para encontrar la falla.


Linux
  1. Cómo conectarse a SFTP usando FileZilla para la transferencia segura de archivos

  2. ¿Cómo agregar una nueva línea al final de un archivo?

  3. ¿Cómo redirigir la salida de system() a un archivo?

  4. ¿Cómo encontrar el administrador de archivos predeterminado?

  5. ¿Cómo funcionan los permisos de archivo para el usuario root?

Cómo cargar un archivo al servidor

Cómo agregar una clave pública SSH al servidor

Cómo cambiar el nombre de host del servidor en Ubuntu

¿Cómo cambiar la zona horaria en Ubuntu 18.04 Server?

Cómo instalar y configurar el cortafuegos CSF para Linux

¿Cómo especificar el nombre de host para el contenedor en ejecución?