Como montar um diretório SSHFS remoto automaticamente na inicialização do Debian.

Você configura uma montagem SSHFS, confirma que funciona, reinicia o Debian e, de repente, o diretório remoto está vazio novamente. O comando manual funcionou porque você estava logado, a rede já estava online e o SSH podia solicitar confirmação de senha ou chave de host, se necessário. Montagens feitas durante a inicialização não oferecem essas facilidades.

A solução confiável é tornar a autenticação SSH não interativa, criar uma /etc/fstabentrada persistente e informar ao systemd que o sistema de arquivos depende da rede. Este guia começa com a configuração funcional mais simples e, em seguida, adiciona opções para redes lentas e interrupções de sessões SSH. Os exemplos usam `/var/www/html` user@server.example.com:/srv/datacomo diretório remoto e `/usr /mnt/remote/local/bin` como ponto de montagem local.

A página de pacotes do Debian lista atualmente o SSHFS 3.7.3 para o Debian 12 (Bookworm), e o SSHFS utiliza o subsistema SFTP fornecido pelo SSH. Consulte a página de pacotes do SSHFS no Debian e o manual do SSHFS . As revisões dos pacotes variam entre as versões do Debian, mas a abordagem de montagem de inicialização descrita abaixo baseia-se no comportamento padrão do fstab e do systemd.

Por que uma montagem SSHFS funciona manualmente, mas falha na inicialização?

A maioria das falhas ocorre por três motivos. Primeiro, o SSH ainda pode exigir uma senha, frase secreta ou confirmação da chave do host na primeira conexão. Um processo de inicialização não possui um terminal onde possa responder a essas solicitações. Segundo, a montagem pode ser iniciada antes que a rede ou o DNS estejam totalmente operacionais. Terceiro, uma conexão SSH de longa duração pode se tornar obsoleta após uma interrupção de rede.

A documentação do systemd do Debian explica que a _netdevopção força uma montagem a ser tratada como uma montagem de rede. As montagens de rede são ordenadas após network-online.target. A mesma documentação observa que /etc/fstabas entradas são convertidas em unidades de montagem nativas do systemd na inicialização. Veja systemd.mount(5) no Debian .

1. Instale o SSHFS e crie o ponto de montagem.

Instale o cliente SSHFS incluído e crie o diretório local que irá expor os arquivos remotos:

sudo apt update
sudo apt install sshfs
sudo mkdir -p /mnt/remote

O SSHFS é baseado no FUSE, a interface de sistema de arquivos em espaço de usuário do Linux. No Debian 12, o sshfspacote depende do FUSE 3 e do cliente OpenSSH.

Terminal Debian mostrando a atualização do apt, a instalação do SSHFS e a criação do diretório /mnt/remote.
Instale o pacote SSHFS e crie o diretório local que se tornará o ponto de montagem.

2. Configure a autenticação SSH que pode ser executada sem prompt.

Para uma montagem em todo o sistema iniciada pelo systemd, uma chave dedicada pertencente ao root é simples, pois o auxiliar de montagem é executado como root. Gere uma chave sem senha somente se a própria máquina for confiável e a chave for restrita a essa finalidade.

sudo ssh-keygen -t ed25519 -f /root/.ssh/sshfs_remote
sudo ssh-copy-id -i /root/.ssh/sshfs_remote.pub user@server.example.com

O segundo comando normalmente solicita a senha da conta remota apenas uma vez. Em seguida, teste a identidade exata de forma não interativa:

sudo ssh -i /root/.ssh/sshfs_remote -o BatchMode=yes user@server.example.com true

Se o comando for concluído com sucesso, sem exibir nenhuma mensagem, a autenticação está pronta para a inicialização. Se for solicitada a confirmação da impressão digital do servidor, conecte-se interativamente como root, verifique a impressão digital em uma fonte confiável e aceite-a. Não contorne erros de chave do host desativando a verificação do host.

O OpenSSH documenta BatchMode=yesespecificamente scripts e trabalhos em lote porque desativa as solicitações de senha e confirmação. As chaves do host são verificadas no known_hostsarquivo do usuário. Consulte o manual do ssh(1) do Debian e ssh_config(5) .

Terminal Debian mostrando a criação de chave SSH, ssh-copy-id e um teste de conectividade SSH em modo Batch.
Prepare o acesso SSH baseado em chave e verifique se a conexão pode ser estabelecida com sucesso sem entrada interativa.

3. Confirme manualmente a montagem do SSHFS antes de editar o fstab.

Não depure a ordem de inicialização até que o comando SSHFS básico funcione. Monte o diretório uma vez usando a mesma chave:

sudo sshfs user@server.example.com:/srv/data /mnt/remote   -o IdentityFile=/root/.ssh/sshfs_remote   -o reconnect   -o ServerAliveInterval=15   -o ServerAliveCountMax=3

Verifique se consegue listar os arquivos remotos e, em seguida, desmonte-os antes de testar o fstab:

ls -la /mnt/remote
sudo fusermount3 -u /mnt/remote

O manual do SSHFS recomenda reconnecto restabelecimento de conexões interrompidas. Ele também explica que isso ServerAliveIntervalpode evitar uma montagem aparentemente congelada quando uma conexão SSH ociosa é silenciosamente encerrada. Com um intervalo de 15 segundos e a contagem padrão do OpenSSH de três sondagens não respondidas, uma conexão inativa é detectada em aproximadamente 45 segundos; aqui, a contagem é escrita explicitamente para que o comportamento seja óbvio.

4. Adicione uma entrada SSHFS persistente em /etc/fstab

Faça um backup do arquivo antes de editá-lo:

sudo cp /etc/fstab /etc/fstab.backup
sudo nano /etc/fstab

Adicione uma linha:

user@server.example.com:/srv/data /mnt/remote fuse.sshfs _netdev,IdentityFile=/root/.ssh/sshfs_remote,BatchMode=yes,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,default_permissions 0 0

O fuse.sshfssubtipo é reconhecido pelas ferramentas de montagem do Debian. O manual upstream do SSHFS também o documenta sshfscomo um tipo de sistema de arquivos fstab e notas para compatibilidade. O manual fstab(5)fuse.sshfs do Debian descreve os seis campos do fstab e recomenda a notação de subtipo de sistema de arquivos, como .fuse.sshfs

OpçãoPor que está aqui?
_netdevFaz com que o systemd trate a montagem como dependente da rede.
IdentityFile=...Seleciona a chave privada explicitamente, em vez de depender de um agente interativo.
BatchMode=yesFalha em vez de aguardar uma senha ou solicitação de confirmação.
reconnectPermite que o SSHFS restabeleça uma conexão interrompida.
ServerAliveInterval=15Envia sondagens keepalive em nível SSH durante períodos de inatividade.
ServerAliveCountMax=3Limita as tentativas de keepalive sem resposta antes de desconectar o SSH.
default_permissionsPermite a verificação de permissões locais, além da autorização remota.
O editor Nano exibe uma entrada SSHFS em /etc/fstab com as opções _netdev, IdentityFile, reconnect e ServerAlive.
Adicione a montagem SSHFS ao /etc/fstab com opções explícitas de rede, identidade e reconexão.

5. Teste a entrada do fstab antes de reiniciar.

/etc/fstabÉ muito mais fácil corrigir um erro de digitação antes de reiniciar. Peça ao systemd para recarregar as unidades de montagem geradas e, em seguida, teste a entrada:

sudo systemctl daemon-reload
sudo mount -a
findmnt -T /mnt/remote
ls -la /mnt/remote

Se mount -anão retornar nenhum erro e findmntreportar , a sintaxe do fstab é aceita e o sistema de arquivos é montado. O manual mount(8)fuse.sshfs do Debian confirma que monta sistemas de arquivos fstab exceto entradas marcadas .mount -anoauto

Terminal Debian mostrando `mount -a`, saída do `findmnt` para `/mnt/remote` e uma unidade de montagem systemd ativa.
Antes de reiniciar, verifique a entrada do fstab com os comandos `mount -a`, `findmnt` e a unidade de montagem do systemd gerada.

E se a rede não estiver pronta a tempo?

_netdevO systemd obtém a semântica de ordenação correta, mas network-online.targetsua precisão depende da qualidade do serviço de gerenciamento de rede que o fornece. Wi-Fi, VPNs, atrasos no DHCP, atrasos no DNS e configurações de rede incomuns ainda podem tornar a montagem imediata do sistema operacional instável.

Nesse caso, use a montagem automática do systemd para que o processo de inicialização crie um ponto de montagem automática e estabeleça a conexão SSHFS somente quando algo acessar o sistema pela primeira vez /mnt/remote. Adicione x-systemd.automountàs opções:

user@server.example.com:/srv/data /mnt/remote fuse.sshfs _netdev,x-systemd.automount,IdentityFile=/root/.ssh/sshfs_remote,BatchMode=yes,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,default_permissions 0 0

Essa costuma ser a melhor opção para laptops, sistemas Wi-Fi ou servidores onde o host remoto pode ocasionalmente ficar indisponível. A semântica muda ligeiramente: a montagem automática é preparada durante a inicialização, mas a conexão SSH propriamente dita é estabelecida no primeiro acesso. Se um aplicativo realmente precisar que o diretório remoto esteja conectado antes de iniciar, mantenha a montagem de rede normal e faça com que a unidade systemd desse aplicativo dependa da unidade de montagem.

Você precisa do allow_other?

Por padrão, uma montagem FUSE só é acessível com as permissões associadas ao contexto de montagem. O manual do SSHFS documenta allow_othercomo permitir o acesso por outros usuários locais. Não adicione permissões adicionais a menos que um serviço ou outra conta realmente precise dos arquivos montados.

Se você usar o SSH allow_other, revise /etc/fuse.confprimeiro as implicações de segurança do FUSE. default_permissionsGeralmente, é apropriado combiná-lo com o FUSE para que as verificações de permissão do Unix local não sejam ignoradas. A conta SSH remota ainda determina, em última instância, quais operações o servidor permite.

Solução de problemas de falhas do SSHFS durante a inicialização

A montagem aguarda uma senha.

Repita o teste não interativo exatamente como está sudo ssh ... -o BatchMode=yes. Se falhar, corrija a autenticação por chave pública antes de mexer no systemd. Uma chave protegida por senha também precisará de um agente ou outro mecanismo de segredo de inicialização; uma montagem simples do fstab não pode digitar a senha para você.

Falha na verificação da chave do host

Não defina isso StrictHostKeyChecking=nocomo uma solução genérica. Verifique se o servidor foi reconstruído ou se a chave do host foi alterada legitimamente. A verificação da chave do host SSH é uma medida de segurança contra ataques de falsificação de identidade e ataques do tipo "homem no meio".

A montagem funciona após o login, mas não durante a inicialização.

Verifique o nome da unidade gerada e seu diário. Para /mnt/remote, o systemd normalmente escapa o caminho para mnt-remote.mount:

systemctl status mnt-remote.mount
journalctl -b -u mnt-remote.mount

Se você adicionou x-systemd.automount, verifique também:

systemctl status mnt-remote.automount

O acesso fica bloqueado após o servidor ou a rede desaparecer.

Mantenha os recursos Keep reconnecte SSH keepalive ativados. O manual do SSHFS alerta que as operações do sistema de arquivos podem ficar bloqueadas indefinidamente quando uma conexão interrompida não é detectada. Os keepalives limitam a detecção de falhas, mas qualquer operação de E/S que estivesse em andamento quando a conexão foi interrompida ainda pode falhar e precisar ser repetida pelo aplicativo.

Como verificar se a montagem realmente persiste após uma reinicialização?

Após a mount -aconclusão bem-sucedida, reinicie a máquina:

sudo reboot

Após reconectar, execute estas verificações:

findmnt -T /mnt/remote
systemctl is-active mnt-remote.mount
ls -la /mnt/remote

Se você selecionou essa opção x-systemd.automount, a unidade de montagem pode ficar inativa até o primeiro acesso. Verifique primeiro a montagem automática e, em seguida, acione-a com ls:

systemctl is-active mnt-remote.automount
ls -la /mnt/remote
findmnt -T /mnt/remote

Uma configuração bem-sucedida apresenta quatro propriedades observáveis: a autenticação SSH é concluída sem interação, a entrada no fstab é aprovada mount -a, o systemd reconhece a montagem como dependente da rede e os arquivos remotos ficam acessíveis após uma reinicialização completa. Se alguma dessas verificações falhar, solucione o problema diretamente nessa camada, em vez de adicionar mais opções de montagem aleatoriamente.

Deixar um comentário

Como recuperar partições perdidas e dados do disco rígido com segurança

Como recuperar partições perdidas e dados do disco rígido com segurança

Aprenda como recuperar partições e arquivos perdidos com o TestDisk e o PhotoRec. Proteja a unidade de origem, faça a verificação com segurança e salve os dados recuperados em outro disco.

Como ler códigos QR em um computador Linux

Como ler códigos QR em um computador Linux

Escaneie códigos QR no Linux com o CoBang usando uma webcam ou um arquivo de imagem. Veja as opções de instalação, etapas de configuração e correções para acesso à câmera via Flatpak.

Como alterar as configurações da webcam no Linux com o Cameractrls

Como alterar as configurações da webcam no Linux com o Cameractrls

Altere as configurações da webcam no Linux com o Cameractrls: ajuste a exposição, a cor, a redução de cintilação e outros controles compatíveis e, em seguida, verifique os modos de vídeo compatíveis.

Como instalar o PhpStorm no Linux: Toolbox, Tar.gz, Snap e AUR

Como instalar o PhpStorm no Linux: Toolbox, Tar.gz, Snap e AUR

Instale o PhpStorm no Linux com o JetBrains Toolbox ou o arquivo tar.gz independente, além das opções Snap e Arch AUR. O Java já está incluído.

Como configurar dois painéis no XFCE 4

Como configurar dois painéis no XFCE 4

Crie um painel XFCE 4 separado para cada tela, atribua o segundo painel à saída correta, posicione-o e dimensione-o e adicione os atalhos e itens de status necessários.

Como instalar o Cisco Packet Tracer no Linux

Como instalar o Cisco Packet Tracer no Linux

Baixe o Cisco Packet Tracer 9.0.1 para Ubuntu 64 bits, instale o pacote DEB com o APT, aceite a licença no Terminal e faça login para iniciar um laboratório.

Como recortar uma imagem no Linux com o GIMP

Como recortar uma imagem no Linux com o GIMP

Remova o fundo de uma foto no Linux com o GIMP: trace o contorno do objeto, exclua o fundo selecionado, mantenha a transparência e exporte um PNG reutilizável.

Como fazer backup de um CD-ROM como um arquivo ISO no Linux

Como fazer backup de um CD-ROM como um arquivo ISO no Linux

Crie uma imagem ISO de CD-ROM no Linux com o GNOME Disks ou o comando dd. Identifique a unidade óptica, monitore a cópia, verifique a imagem e saiba quando um disco danificado ou de áudio precisa de outra ferramenta.

Baixe o FlightGear gratuitamente: Guia de Instalação Oficial

Baixe o FlightGear gratuitamente: Guia de Instalação Oficial

Baixe o FlightGear gratuitamente no site oficial. Compare os pacotes para Windows, macOS e Linux, instale os arquivos de dados e inicie seu primeiro voo.

Aplicativo Google Tasks para desktop: como usá-lo no computador

Aplicativo Google Tasks para desktop: como usá-lo no computador

Abra o Google Tasks em um navegador, adicione um atalho do Chrome ou inicie o aplicativo automaticamente e gerencie suas tarefas agendadas pelo Agenda e pelo Gmail.