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.