sshfs siempre pide contraseña en fstab?


20

Estoy tratando de ingresar un montaje sshfs en / etc / fstab con la siguiente línea:

sshfs#oli@192.168.0.2:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other 0 0

Para que este volumen se monte en el arranque. Después de arrancar, no sucede nada, pero cuando uso el comando sudo mount -a, siempre se me solicita la contraseña. He configurado SSH Keys y las he transferido a la computadora en 192.168.0.2, y puedo iniciar sesión en ssh normal sin contraseña. ¿Cómo puedo evitar que el fusible solicite mi contraseña para que el volumen se pueda montar automáticamente en el momento del arranque?

Si me sirve de algo, estoy tratando de conectarme a un servidor doméstico que ejecuta Debian desde una computadora portátil que ejecuta Arch Linux. Gracias

Respuestas:


13

La autenticación basada en claves solo puede funcionar si el sshproceso puede encontrar su clave. Presumiblemente tiene su clave en su directorio de inicio; pero nunca has dicho sshfsdónde buscar una llave. En el momento del arranque, estaría rootmontando todos los sistemas de archivos, por lo tanto, la clave debe estar dentro /root/.ssho referenciada /root/.ssh/config.

Recomiendo montar el sistema de archivos después de que haya iniciado sesión y como su propio usuario. Ponga esto en un script que se ejecute cuando inicie sesión:

ssh-add ~/.ssh/name_of_key.id_rsa
sshfs homeserver:/media/usb0 ~/exthd

Ponga un alias llamado homeserveren su ~/.ssh/config:

Host homeserver
HostName 192.168.0.2
User oli

Ahh, esa es una mejor manera de hacerlo, no pensé ponerlo en mi script de inicio de sesión. ¡Gracias!
semiserious

Tenga cuidado al usar ~en el punto de montaje. Si está utilizando un icono de iniciador en el panel para ejecutar el comando en lugar de un terminal, es ~posible que no se evalúe como /home/y el comando fallará.
Nick

@Nick Si está utilizando una GUI, podría tener una herramienta dedicada al montaje automático. Si sigues mi respuesta, debes poner los dos comandos en un script de shell; el ícono del iniciador ejecutaría ese script.
Gilles 'SO- deja de ser malvado'

10

Pude hacer que sshfs se monte a través de fstab con Ubuntu 14.04 al usar la siguiente sintaxis como usuario estándar (tenga en cuenta que cualquier cosa en CAPS es una variable para que complete):

USER@HOST:/REMOTE_DIR /LOCAL_DIR fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID,gid=USER_GID 0 0

Esta es una combinación de la información que se encuentra aquí /superuser/669287/automount-sshfs-using-fstab-without-mount-a y agrega delay_connect desde aquí /ubuntu/ 326977 / sshfs-is-not-montaje-automáticamente-al-arranque-a pesar de-etc-fstab-configuration .

Utilicé este tutorial para obtener mi USER_ID y USER_GID: https://kb.iu.edu/data/adwf.html

Para encontrar el UID o GID de un usuario en Unix, use el comando id. Para encontrar el UID de un usuario específico, en la solicitud de Unix, ingrese:

id -u username

Reemplace el nombre de usuario con el nombre de usuario del usuario apropiado. Para encontrar el GID de un usuario, en el indicador de Unix, ingrese:

id -g username

Además, si desea un tutorial completo, se publicará en https://www.variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04/


Ese enlace: variux.com/blog/?p=161 parece que ya no funciona ...
Christian Casutt

@ChristianMuggli gracias por tu comentario. He actualizado la dirección del tutorial completo. Sin embargo, no he probado el tutorial en mucho tiempo. variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04
variuxDavid

5

Yo tuve el mismo problema.

Anteriormente había configurado las teclas ssh a través de ssh-keygeny luegossh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.100

ssh funcionó bien sin pedirme una contraseña, así que estaba confundido sobre por qué sshfs todavía quería la contraseña ...

Es decir,

ssh root@192.168.0.100 

funcionó bien, sin embargo, sshfs aún solicitó una contraseña cuando escribí

sudo sshfs root@192.168.0.100:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

Como Gilles explicó anteriormente, sshfsestaba buscando en el directorio raíz las claves necesarias.

Por lo tanto, resolví esto simplemente copiando los archivos id_rsa e id_rsa.pub de la carpeta oculta .ssh de mi carpeta de inicio a la carpeta .ssh de la raíz, es decir

cp /home/pi/.ssh/id_rsa /root/.ssh/
cp /home/pi/.ssh/id_rsa.pub /root/.ssh/

Luego, escribir lo siguiente funcionó sin molestarme por una contraseña:

sudo sshfs root@192.168.0.100:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

Esto es realmente muy malo desde una perspectiva de seguridad. Mejor cree un conjunto separado de claves para root y agréguelo también a autorizado_keys. Usted debe no copiar las claves privadas alrededor.
Christian Wolf

3

Si desea que se inicie sin una contraseña, deberá crear una clave ssh pública / privada sin contraseña. No es recomendable, pero al menos puede proteger esos archivos con un chmod 400usuario root.

Después de eso, como de costumbre, deberá copiar la clave pública en el punto de montaje:

ssh-copy-id -i my_new_key.pub oli@192.168.0.2

Y deberá decirle a sshfs que use esta clave.

oli@192.168.0.2:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other,'IdentityFile /path/to/private/key' 0 0

2
SSHFS version 2.8 fuse: unknown option 'SSHOPT=IdentityFile /home/ravi/.ssh/id_boxy_rsa'
Tom Hale

1
@TomHale en lugar de ,SSHOPT='IdentityFile /path/to/private/key'eso es simplemente,IdentityFile /path/to/private/key
pulkitsinghal

2

Funciona para mí perfectamente en Debian 8.2 agregando la siguiente línea a fstab:

user@hostname:/path/to/localmountpoint /path/to/remotemountpoint fuse.sshfs _netdev,user,port=(if_not_22),idmap=user,transform_symlinks,identityfile=/home/user/.ssh/id_rsa,allow_other,default_permissions,uid=user_id,gid=group_id 0 0

El nombre de host indica que el usuario del servidor remoto (carpeta para montar) es el mismo local y remotamente. (más fácil)

Asegúrese de haber creado localmente la clave ssh para que la use el usuario ssh-keygeny use ssh-copy-idpara copiar la clave al servidor remoto (nombre de host).

Puede encontrar user_idy group_idpara el usuario en el servidor local /etc/passwd.

También asegúrese de que el usuario tenga permisos de lectura / escritura en la carpeta path/to/localmountpoint.


2

En realidad, puede montar SSHFS sin clave pública en el inicio utilizando la opción password_stdin, pero no con fstab.

Lo que necesitas es un pequeño archivo de script y cron.

Tenga en cuenta que la clave pública siempre es una mejor opción. Pero a veces las claves públicas no funcionan (he tenido ese problema varias veces). Tenga en cuenta que el archivo de secuencia de comandos contendrá la contraseña sin formato. ¡Por lo tanto, debe asegurarse de que solo root tenga permiso para este archivo!

El archivo de script puede verse así (/root/automount.sh):

#!/bin/sh
if [ $(mount | grep 'user@server:/folder' | wc -l) -ne 1 ]
then
    echo 'PASSWORD' | sshfs user@server:/folder /mnt/mountpoint -o password_stdin,allow_other
    echo 'SSHFS has been mounted.'
else
    echo 'SSHFS is already mounted.'
fi

Para ejecutar esto en el inicio, puede usar crontab como root e ingresar esta línea:

@reboot /root/automount.sh

Como se indicó anteriormente, debe asegurarse de que absolutamente nadie pueda leer el archivo, ya que contiene una contraseña de texto sin formato.

-rwx------ 1 root root 526 Nov 21 12:57 automount.sh

Por ahora, después de cada reinicio, su sistema montará automáticamente el SSHFS utilizando credenciales.


0

Tuve el mismo problema Al final, ayudó a establecer el tipo en fusible simple o (lo que es más probable) truncar las opciones para:

fuse reconnect,idmap=user,allow_other,default_permissions

que funcionó para mí al final


0

Si está intentando conectarse a un servidor que no admite claves y aún así desea que sea automático, puede usarlo sshpasspara escribir su contraseña, incluso con sshfse incluso en fstab.

Por ejemplo, si pones algo similar a esto en /etc/fstab:

sshfs#username@host:/  /mnt/here   fuse   auto,ssh_command=sshpass\040-f\040/root/.ssh/host.password\040ssh  0  0

Luego ponga la contraseña en el nombre de archivo especificado en /etc/fstab:

echo 'secret' > /root/.ssh/host.password

Asegúrate de haber instalado sshpass:

pacman -S sshpass  # if you're using Arch Linux

Entonces debería funcionar:

mount /mnt/here

Es posible que sshprimero tenga que acudir al servidor para confirmar su clave, pero después de eso, esto debería funcionar sin interacción manual, y con la autobandera en fstabél debería montarse en el momento del arranque sin necesidad de ingresar manualmente la contraseña.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.