Como montar automaticamente diretórios remotos no login / inicialização

3

Toda vez que eu inicializo, uso sshfs para montar diretórios remotos. Estou pensando em colocar esses comandos curtos na minha .bashrc, mas isso não parece ser o The Right Way ™.

Qual é a maneira correta de executar sshfs no login?

    
por Framester 05.11.2012 / 15:07

3 respostas

4

De fato, .bashrc não está certo . Esse arquivo é lido quando você abre um terminal executando um shell interativo (se seu shell é bash).

Você pode executar montagens sshfs no momento da inicialização, mas isso só funciona se você não precisar de nenhuma autenticação interativa: na maioria das configurações isso significa uma chave sem senha. (Existem outras maneiras, mas elas só se aplicam dentro de redes confiáveis onde você normalmente já teria algo como o NFS.)

  • Se você é root, você pode adicionar uma entrada em /etc/fstab . Observe que isso usará ~/.ssh do root para procurar chaves e hosts conhecidos.

    example.com:/remote/path /mount/point fuse.sshfs idmap=user,uid=1234
    
  • Você pode colocar um @reboot entrada do crontab .

    @reboot sshfs -o idmap=user example.com:/remote/path /mount/point
    

Se você precisar digitar uma senha para enviar ao servidor remoto, será necessário fazer login e ter uma interface de usuário disponível primeiro. A mesma coisa, se você precisar digitar uma senha para desbloquear uma chave.

A maioria dos gerenciadores de janela e ambientes de área de trabalho permite que você execute comandos personalizados ao efetuar login. Você pode executar um snippet como o seguinte (supondo que seu ambiente já inicie um agente SSH):

SSH_ASKPASS=ssh-askpass ssh-add ~/.ssh/id_rsa
mount | grep ' /mount/point ' ||
sshfs -o idmap=user example.com:/remote/path /mount/point

mount | grep ' /mount/point ' || verifica se o sistema de arquivos parece estar montado já, no caso de você efetuar login por vários meios. Como alternativa, sem usar um agente:

mount | grep ' /mount/point ' ||
SSH_ASKPASS=ssh-askpass sshfs -o idmap=user example.com:/remote/path /mount/point

Se você não tem o programa ssh-askpass , outro método é abrir um terminal apenas para fazer a montagem:

xterm -e 'ssh-add ~/.ssh/id_rsa'
mount | grep ' /mount/point ' ||
sshfs -o idmap=user example.com:/remote/path /mount/point

Para entrar no modo de texto, coloque ssh-add no seu ~/.profile . Execute-o somente se o shell for interativo.

case $- in
  *i*)
    ssh-add ~/.ssh/id_rsa
    ;;
esac
sshfs -o idmap=user example.com:/remote/path /mount/point
    
por 06.11.2012 / 01:10
0

Se você deseja montar sistemas de arquivos na inicialização, é necessário colocá-los no seu /etc/fstab . Aqui está um exemplo da documentação do OpenBSD. Eu faço isso regularmente para armazenamento NFS em servidores remotos.

10.0.0.1:/work /mnt nfs rw 0 0

Esse formato funcionará bem. Seu IP então o diretório que você quer montar. E então, onde você deseja montá-lo no servidor remoto. fstab é a melhor maneira de fazer isso no mount. Ou você pode ter um pequeno script que você pode executar ao inicializar.

    
por 05.11.2012 / 16:43
0

Para este caso de uso, eu uso confortavelmente afuse, um auto-contador sshfs FUSE -based [1] . Na minha configuração, ele é (re-) gerado por uma poucas linhas simples de shell script [2] originado por ~/.profile .

O script é basicamente uma versão de:

if <detect if afuse is not running> then <start it with correct params>

[1]: afuse está disponível no gerenciador de pacotes para a maioria das distribuições do Linux.

[2]: este script vinculado é da minha pergunta sobre como transformar essa configuração em systemd user service .

    
por 17.07.2016 / 10:16