Como montar automaticamente usando sshfs?


14

Estou usando o seguinte comando para montar um diretório ssh ubuntu no meu pc ubuntu.

sshfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

Minha pergunta é: posso criar um script para isso na área de trabalho em que posso clicar duas vezes e executar esse script sempre que precisar montar a unidade sem digitar manualmente sempre o comando.

Respostas:


15

Você pode criar um iniciador e adicioná-lo à barra do iniciador arrastando e soltando o .desktoparquivo-lá:

    #!/usr/bin/env xdg-open

    [Desktop Entry]
    Version=1.0
    Type=Application
    Terminal=false
    Icon[en_US]=nautilus
    Name[en_US]=Connect to xy
    Exec=shfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx
    #OR: to mount and than open in nautilus (note the '/dir' where ':dir' used to be)
    #Exec=nautilus sftp://user@192.xx.xx.xx.xx/dir/dir
    Comment[en_US]=Connect to xy via ssh
    Name=Connect to xy
    Comment=Connect to xy via ssh
    Icon=nautilus

Sugestão - menos ainda trabalho:

Se você deseja menos trabalho (= conexão automática) e uma interface gráfica do usuário, consulte o Gigolo Instalar gigolo . Ele tem a capacidade de montar automaticamente um marcador sempre que o sistema de arquivos marcado estiver presente. Você pode querer verificar isso.

sudo apt-get install gigolo   # or use the install link above

Corra gigolo. Há uma opção nas preferências que o coloca na inicialização automática e outra para ativar o ícone da bandeja. Verifique os dois. Em seguida, adicione seu marcador.

Aqui está uma captura de tela:

insira a descrição da imagem aqui

Maneira Shell

Outra solução seria colocar a seguinte linha no seu crontab (editar /etc/crontabcom privilégios sudo):

@reboot sshfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

Mas como o gerenciador de senhas do Ubuntu não está presente quando o comando é executado, você precisa usar um par de chaves públicas / privadas sem senha para se autenticar no servidor ssh em questão (ou um método semelhante de autenticação). Isso o montaria em todas as reinicializações.

Outra solução seria editar o seu /etc/fstab(desde que a sua versão do Ubuntu forneça essa opção).


1
Eu não posso usar gigolô. Porque eu quero usar um ponto de montagem específico na minha pasta pessoal. Sua primeira solução parece boa. Mas não estou claro sobre a nomeação de arquivos. Você forneceu ".desktop-file" Esse é o nome ou a extensão do arquivo. Por favor, dê-me mais exemplos sobre a nomeação de arquivos. Então eu posso tentar.
— BlueBird

É a extensão. Todos os lançadores no ubuntu terminam com ".desktop". Crie um arquivo vazio. Copie o texto que eu postei acima nele. Substitua o texto por trás de "Name =" pelo que mais lhe convier e substitua os caminhos reais no texto por trás de "Exec =". Em seguida, salve-o como "connect.desktop" ou "mountxy.desktop" (por exemplo). Depois de salvar o arquivo, arraste e solte-o no painel do iniciador ou em qualquer lugar que você desejar.
— con-f-use

Ótimo!! Funcionou.
— 21811 BlueBird

8
OMG ... o pior nome de todos os tempos para um programa.
— 21411 Lekensteyn

Aparentemente, não há mais opção de adicionar gigolo para iniciar automaticamente, então você terá que fazer isso sozinho. Execute gnome-session-propertiese adicione o /usr/bin/gigolocomando. Não é possível selecionar um ponto de montagem, mas você pode criar um link simbólico para o diretório inicial (com ln -s). Você pode encontrar o ponto de montagem original clicando com o botão direito do mouse em uma pasta no gerenciador de arquivos e selecionando Open in Local Terminal.
— Seppo Enarvi 25/09

4

Este tópico do fórum mostra um método de criação de um SSHFS de montagem automática que me parece exatamente o que você gostaria de fazer.


O thread é bastante antigo e, para adicionar uma montagem dependente da rede, agora podemos usar x-systemde _netdevopções.
— Turgon

3

Você pode simplesmente digitar isso em um script de shell e criar um iniciador para ele na área de trabalho.

Por exemplo mountssh.sh:

#!/bin/bash
shfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

certifique-se chmod +x mountssh.she, em seguida, clicando nele será executado

Alternativamente, você pode montá-lo via gvfs, clicando com o botão direito na área de trabalho e criar um lançador com o parâmetro URL: ssh://user@192.xx.xx.xx.xx/dir/dir. Por padrão, ele é montado em ~/.gvfs/.... Se você quiser ficar com o /home/username/mount/xxx, você pode criar um link simbólico do gvfs para este.


Eu criei o arquivo "mount-192.168.1.5.sh" na minha área de trabalho. Quando clico duas vezes, ele é aberto com o gedit.
— BlueBird

Você precisa criar esse arquivo sh com privilégios de executável em qualquer lugar e criar um iniciador na área de trabalho, que aponte para esse arquivo .sh.
— Iradrian

2

Você pode dar um passo adiante e solicitar que os autofs cuidem da montagem. Como o autofs não funciona particularmente bem com a autenticação de chave pública SSH (a menos que você queira criar um par de chaves sem senha para o superusuário ), existem ferramentas que permitem usar as chaves SSH do usuário, ssh-agent e keychain:

  • autosshfs : automount SSHFS por usuário usando a configuração SSH do usuário
  • afuse : um montador automático implementado com o FUSE

0

Montei uma pasta exatamente da mesma maneira, o que fiz foi criar um iniciador personalizado que aponta para um .sharquivo que contém o comando. Apenas verifique se o arquivo tem permissão de execução e você está pronto.

Basta clicar no iniciador:

insira a descrição da imagem aqui


0

Tentei usar o cron para montar automaticamente o diretório ssh, mas causa um erro ao dizer Network is unreachable. Isso ocorre porque a execução da tarefa cron é muito cedo para estabelecer conexões IP. Depois de inserir o sono antes do sshfscomando, ele montou com êxito o diretório ssh.

sleep 5 && sshfs ......

Então, eu fiz esse script para atender aos meus requisitos.

#! /bin/sh
while true
do 
    ping -c1 -w1 ssh_server_ip > /dev/null && break
done
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 sshname:/mountpath /localmountpath
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.