sshfs sempre pedindo senha no fstab?

15

Estou tentando inserir uma montagem sshfs em / etc / fstab com a seguinte linha:

sshfs#[email protected]:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other 0 0

Para que este volume seja montado na inicialização. Após a inicialização, nada acontece, mas quando eu uso o comando sudo mount -a, sempre me perguntam a senha. Eu configurei as Chaves SSH e as transferi para o computador em 192.168.0.2, e posso efetuar login no ssh normal sem nenhuma senha. Como posso evitar que o fusível peça minha senha para que o volume possa ser montado automaticamente no momento da inicialização?

Se isso ajudar, estou tentando conectar-me a um servidor doméstico rodando Debian a partir de um laptop rodando o Arch Linux. Obrigado

    
por semiserious 17.01.2012 / 00:31

8 respostas

11

A autenticação baseada em chave só funciona se o processo ssh puder localizar sua chave. Você presumivelmente tem sua chave em seu diretório pessoal; mas você nunca disse sshfs onde procurar por uma chave. No momento da inicialização, seria root de montagem de todos os sistemas de arquivos, portanto, a chave deve estar em /root/.ssh ou referenciada em /root/.ssh/config .

Eu recomendo montar o sistema de arquivos depois que você estiver logado e como seu próprio usuário. Coloque isso em um script que é executado quando você faz o login:

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

Coloque um alias chamado homeserver no seu ~/.ssh/config :

Host homeserver
HostName 192.168.0.2
User oli
    
por 17.01.2012 / 01:08
6

Eu consegui fazer o sshfs mount via fstab com o Ubuntu 14.04 usando a seguinte sintaxe como usuário padrão (note que qualquer coisa no CAPS é uma variável para você preencher):

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 é uma combinação das informações encontradas aqui link e adicionando o delay_connect aqui link .

Eu usei este tutorial para obter meu USER_ID e USER_GID: link

Para encontrar um UID ou GID de um usuário no Unix, use o comando id. Para localizar o UID de um usuário específico, no prompt do Unix, digite:

id -u username

Substitua o nome de usuário pelo nome de usuário do usuário apropriado. Para encontrar o GID de um usuário, no prompt do Unix, digite:

id -g username

Além disso, se você quiser um tutorial completo, ele será postado em link

    
por 23.05.2014 / 21:24
4

Eu tive o mesmo problema.

Eu tinha configurado anteriormente as chaves ssh via ssh-keygen e, em seguida, ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

ssh funcionou bem sem me pedir uma senha, então fiquei confuso sobre por que o sshfs ainda queria a senha ...

Isto é,

ssh [email protected] 

funcionou bem, no entanto sshfs ainda pediu uma senha quando eu digitei

sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

Como Gilles explicou acima, sshfs estava procurando no diretório raiz as chaves necessárias.

Portanto, resolvi isso apenas copiando os arquivos id_rsa e id_rsa.pub da pasta .ssh da minha pasta pessoal para a pasta .ssh da raiz, por exemplo

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

Então, digitar o seguinte funcionou sem me incomodar com uma senha:

sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other
    
por 09.12.2013 / 20:34
2

Funciona para mim perfeitamente no Debian 8.2 adicionando a seguinte linha 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

Nome do host indica o servidor remoto (pasta para montagem) usuário é o mesmo localmente e remotamente. (mais fácil)

Certifique-se de ter criado localmente a chave ssh para o usuário usando ssh-keygen e use ssh-copy-id para copiar a chave para o servidor remoto (hostname).

Você pode encontrar user_id e group_id para o usuário no servidor local /etc/passwd .

Verifique também se o usuário tem permissões de leitura / gravação na pasta path/to/localmountpoint .

    
por 19.12.2015 / 12:37
2

Se você quiser que ele seja inicializado sem uma senha, você precisará criar um ssh público / privado sem senha. Não é recomendável, mas você pode pelo menos proteger esses arquivos com um chmod 400 como usuário root.

Depois disso, como de costume, você precisará copiar a chave pública no ponto de montagem:

ssh-copy-id -i my_new_key.pub [email protected]

E você precisará dizer ao sshfs para usar essa chave.

[email protected]:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other,'IdentityFile /path/to/private/key' 0 0
    
por 17.01.2012 / 10:50
1

Na verdade, você pode montar o SSHFS sem chave pública na inicialização usando a opção password_stdin, mas não com fstab.

O que você precisa é de um pequeno arquivo de script e cron.

Por favor, esteja ciente de que a chave pública é sempre uma escolha melhor. Mas, às vezes, as chaves públicas não funcionam (já tive esse problema algumas vezes). Por favor, note que o arquivo de script irá conter a senha na planície. Portanto, você deve se certificar de que somente o root tenha permissão para este arquivo!

O arquivo de script pode ter esta aparência (/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 executar isso na inicialização, você pode usar o crontab como root e inserir esta linha:

@reboot /root/automount.sh

Como dito acima, você deve se certificar de que absolutamente ninguém pode ler o arquivo, pois ele contém uma senha em texto simples!

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

Agora, após cada reinicialização, seu sistema montará automaticamente o SSHFS usando credenciais.

    
por 21.11.2016 / 13:08
0

Tive o mesmo problema. No final, ajudou a definir o tipo para um fusível simples ou (o que é mais provável) truncar as opções para:

fuse reconnect,idmap=user,allow_other,default_permissions

que funcionou para mim no final

    
por 13.01.2015 / 17:09
0

Se você estiver tentando se conectar a um servidor que não oferece suporte a chaves e ainda quiser que ele seja automático, use sshpass para digitar sua senha, mesmo com sshfs e até mesmo em fstab .

Por exemplo, se você colocar algo semelhante a isso em /etc/fstab :

sshfs#username@host:/  /mnt/here   fuse   auto,ssh_command=sshpass0-f0/root/.ssh/host.password0ssh  0  0

Em seguida, coloque a senha no nome do arquivo especificado em /etc/fstab :

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

Verifique se você instalou sshpass :

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

Então deve funcionar:

mount /mnt/here

Talvez seja necessário ssh para o servidor para confirmar sua chave, mas depois disso isso deve funcionar sem interação manual e com o auto sinalizador em fstab ele deve ser montado no momento da inicialização sem precisa inserir manualmente a senha.

    
por 28.02.2017 / 10:08

Tags