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
-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.