SSHFS (Español)

Esta traducción de
SSHFS
fue revisada el
2020-12-06
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Artículos relacionados
SCP and SFTP
SFTP chroot
Pure-FTPd
sftpman
SSHFS
es un cliente de sistema de archivos basado en
FUSE
para montar directorios remotos a través de una conexión
Secure Shell
.
Instalación
Instale
el paquete
sshfs
.
Sugerencia
Si a menudo necesita montar sistemas de archivos sshfs, puede estar interesado en utilizar un ayudante sshfs, como
qsshfs
AUR
[
enlace roto
: package not found]
,
sftpman
,
sshmnt
AUR
o
fmount.py
.
Es posible que desee utilizar
Google Authenticator
para proporcionar seguridad adicional como es la autenticación de dos pasos.
SSH keys
puede ser utilizado sobre la autenticación tradicional de contraseña.
Montaje
Para poder montar un directorio, el usuario de SSH necesita poder acceder a él. Invoque
sshfs
para montar un directorio remoto:
$ sshfs
[usuario@]host:[dir] puntodemontaje [opciones]
Por ejemplo:
$ sshfs miusuario@micomputadora:/ruta/remota /ruta/local -C -p 9876
Aquí
-p 9876
especifica el número de puerto y
-C
activa la compresión. Para más opciones véase la sección
#Opciones
.
Cuando no se especifica, la ruta remota se establece de manera predeterminada en el directorio de inicio del usuario remoto. Los nombres de usuario y las opciones predeterminadas se pueden predefinir para cada computadora en
~/.ssh/config
para simplificar el uso de
sshfs
. Para obtener más información, véase
OpenSSH#Client usage
.
SSH le pedirá la contraseña, si es necesario. Si no desea escribir la contraseña varias veces al día, véase
SSH keys
.
Desmontaje
Para desmontar el sistema remoto:
$ fusermount3 -u
puntodemontaje
Por ejemplo:
$ fusermount3 -u /ruta/local
Opciones
sshfs
puede convertir automáticamente entre ID de usuarios locales y remotos. Utilice la opción
idmap=user
para traducir el UID del usuario que se conecta al usuario remoto
miusuario
(GID permanece sin cambios):
$ sshfs miusuario@micomputadora:/ruta/remota /ruta/local -o idmap=user
Si necesita más control sobre la traducción de UID y GID, mire las opciones
idmap=file
,
uidfile
y
gidfile
.
Se puede encontrar una lista completa de opciones en
sshfs(1)
.
Haciendo Chroot
Es posible que desee restringir un usuario específico a un directorio específico en el sistema remoto. Esto se puede hacer editando
/etc/ssh/sshd_config
:
/etc/ssh/sshd_config
.....
Match User
algúnusuario
ChrootDirectory
/chroot/%u
ForceCommand internal-sftp
       AllowTcpForwarding no
       X11Forwarding no
.....
Nota
El directorio chroot
debe
ser propiedad del superusuario
(root)
, de lo contrario no podrá conectarse.
Véase también
SFTP chroot
. Para más información revise la página del manual
sshd_config(5)
para
Match
,
ChrootDirectory
y
ForceCommand
.
Montaje automático
El montaje automático puede ocurrir en el arranque o bajo demanda (al acceder al directorio). Para ambos, la configuración ocurre en
fstab
.
Nota
Tenga en cuenta que el montaje automático se realiza a través del superusuario, por lo tanto, no puede utilizar anfitriones
(hosts)
configurados en
.ssh/config
de su usuario normal.
Para permitir que el superusuario utilice una clave SSH de un usuario normal, especifique su ruta completa en la opción
IdentityFile
.
Y más importante
, utilice manualmente cada montaje sshfs al menos una vez
cuando sea superusuario
para que la firma del anfitrión se añada al archivo
/root/.ssh/known_hosts
.
Bajo demanda
Con systemd es posible el montaje bajo demanda utilizando entradas
/etc/fstab
.
Por ejemplo:
usuario@host:/carpeta/remota /punto/montaje  fuse.sshfs noauto,x-systemd.automount,_netdev,users,idmap=user,IdentityFile=/home/usuario/.ssh/id_rsa,allow_other,reconnect 0 0
Las opciones de montaje importantes aquí son
noauto,x-systemd.automount,_netdev
.
noauto
le dice que no se monte en el arranque
x-systemd.automount
hace la magia bajo demanda
_netdev
le dice que es un dispositivo de red, no un dispositivo de bloque (sin él pueden ocurrir errores del tipo "No existe dicho dispositivo")
Nota
Después de editar
/etc/fstab
, (re)inicie el servicio requerido:
systemctl daemon-reload
seguido por
systemctl restart <objetivo>
donde
<objetivo>
se puede encontrar ejecutando
systemctl list-unit-files --type automount
En el arranque
Un ejemplo de cómo utilizar sshfs para montar un sistema de archivos remoto a través de
/etc/fstab
USUARIO@NOMBREHOST_O_IP:/DIRECTORIO/REMOTO  /PUNTOMONTAJE/LOCAL  fuse.sshfs  defaults,_netdev  0  0
Tomemos, por ejemplo, la línea
fstab
llib@192.168.1.200:/home/llib/FAH  /media/FAH2  fuse.sshfs  defaults,_netdev  0  0
Lo anterior funcionará automáticamente si está utilizando una clave SSH para el usuario. Véase
Uso de claves SSH
.
Si quiere utilizar sshfs con múltiples usuarios:
usuario@dominio.org:/home/usuario  /media/usuario   fuse.sshfs    defaults,allow_other,_netdev    0  0
Una vez más, es importante configurar la opción de montaje
_netdev
para asegurarse de que la red esté disponible antes de intentar montar.
Acceso de usuario seguro
Al realizar el montaje automático a través de
fstab
, el sistema de archivos generalmente será montado por el superusuario. De forma predeterminada, esto produce resultados indeseables si desea acceder como un usuario normal y limitar el acceso a otros usuarios.
Un ejemplo de configuración del punto de montaje:
USUARIO@NOMBREHOST_O_IP:/DIRECTORIO/REMOTO  /PUNTOMONTAJE/LOCAL  fuse.sshfs noauto,x-systemd.automount,_netdev,user,idmap=user,follow_symlinks,identityfile=/home/USUARIO/.ssh/id_rsa,allow_other,default_permissions,uid=N_ID_USUARIO,gid=N_GID_USUARIO 0 0
Resumen de las opciones relevantes:
allow_other
- Permite que otros usuarios que no sean el montador (es decir, el superusuario) accedan al recurso compartido.
default_permissions
- Permite que el kernel verifique los permisos, es decir, utilice los permisos reales en el sistema de archivos remoto. Esto permite prohibir el acceso a todas las personas que de otra forma concede
allow_other
.
uid
,
gid
- establece la propiedad de archivos reportada a unos valores determinados;
uid
es el ID numérico de su usuario,
gid
es el ID numérico del grupo de su usuario.
Solución de problemas
Lista de comprobación
Lea primero
OpenSSH (Español)#Lista de comprobación
. Otros temas para verificar son:
1. ¿Su inicio de sesión SSH está enviando información adicional desde, por ejemplo, el archivo
/etc/issue
del servidor? Esto podría confundir SSHFS. Debería desactivar temporalmente el archivo
/etc/issue
del servidor:
$ mv /etc/issue /etc/issue.orig
2. Tenga en cuenta que la mayoría de los artículos de solución de problemas relacionados con SSH que encontrará en la web no están relacionados con Systemd. A menudo las definiciones en
/etc/fstab
comienzan erroneamente con
sshfs#
user@host:/mnt/servidores/carpeta ... fuse ...
en lugar de utilizar la sintaxis
user@host:/mnt/servidores/carpeta ... fuse.
sshfs
...
x-systemd
, ...
.
3. Compruebe que el propietario de la carpeta de origen y el contenido del servidor es propiedad del usuario del servidor.
$ chown -R USER_S: /mnt/servidores/carpeta
4. El ID de usuario del servidor puede ser diferente del cliente. Obviamente ambos nombres de usuario tienen que ser los mismos. Solo tiene que cuidar los ID de usuario del cliente. SSHFS traducirá el UID con las siguientes opciones de montaje:
uid=
ID_USUARIO_C
,gid=
ID_GRUPO_C
5. Compruebe que el punto de montaje de destino del cliente (carpeta) es propiedad del usuario cliente. Esta carpeta debe tener el mismo ID de usuario definido en las opciones de montaje de SSHFS.
$ chown -R USUARIO_C: /mnt/cliente/carpeta
6. Compruebe que el punto de montaje (carpeta) del cliente esté vacío. De forma predeterminada no puede montar carpetas SSHFS en carpetas no vacías.
Connection reset by peer
Si está intentando acceder al sistema remoto con un nombre de host, intente utilizar su dirección IP, ya que puede ser un problema de resolución de nombres de dominio. Asegúrese de editar
/etc/hosts
con los detalles del servidor.
Si está utilizando nombres de clave no predeterminados y los está pasando como
-i .ssh/my_key
, no funcionará. Tiene que utilizar
-o IdentityFile=/home/user/.ssh/my_key
, con la ruta completa a la clave.
Si su
/root/.ssh/config
es un enlace simbólico, recibirá este error también. Véase
este tema en serverfault
Añadiendo la opción '
sshfs_debug
' (como en '
sshfs -o sshfs_debug user@server ...
') puede ayudar a resolver el problema.
Si eso no revela nada útil, también puede intentar añadir la opción '
debug
'
Si está intentando hacer sshfs a través de un enrutador que utiliza DD-WRT o similar, hay una solución
aquí
. (tenga en cuenta que la opción -osftp_server=/opt/libexec/sftp-server se puede utilizar para la orden sshfs en lugar de parchear dropbear)
Si ve esto solo durante el arranque, puede ser que systemd esté intentando montar antes de que haya una conexión de red disponible. Habilite el servicio de 'espera-en-línea' apropiado para su conexión de red (por ejemplo, systemd-networkd-wait-online.service) para solucionar esto.
Hilo antiguo del foro:
sshfs: Connection reset by peer
Asegúrese de que su usuario pueda iniciar sesión en el servidor (especialmente al utilizar AllowUsers)
Asegúrese de que
Subsystem sftp /usr/lib/ssh/sftp-server
está activado en
/etc/ssh/sshd_config
.
Nota
Cuando se proporciona más de una opción para sshfs, deben estar separadas por comas. Al igual que: '
sshfs -o sshfs_debug,IdentityFile=</ruta/a/la/clave> usuario@servidor ...
')
El host remoto se ha desconectado
Si recibe este mensaje directamente después de intentar utilizar
sshfs
:
Primero asegúrese de que la máquina
remota
tiene instalado
sftp
. No funcionará si no lo tiene.
Después, comprueba que la ruta de
Subsystem sftp
en
/etc/ssh/sshd_config
en la máquina remota es válida.
Problemas de montaje fstab
Para obtener una salida de depuración detallada, añada lo siguiente a las opciones de montaje:
ssh_command=ssh\040-vv,sshfs_debug,debug
Nota
Aquí,
\040
representa un espacio que fstab utiliza para separar campos.
Para poder ejecutar
mount -av
y ver la salida de depuración, elimine lo siguiente:
noauto,x-systemd.automount
Véase también
Cómo montar el sistema de archivos SSH en chroot
, Con especial cuidado con las preguntas de propietarios y permisos.