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

Corrigindo o Screen Tearing em placas gráficas Intel no Pardus Linux: Um guia focado em resultados

Corrigindo o Screen Tearing em placas gráficas Intel no Pardus Linux: Um guia focado em resultados

Corrija o problema de tearing (rasgo na tela) causado por placas gráficas Intel no Pardus Linux verificando as configurações de X11 vs. Wayland, as configurações do compositor, a taxa de atualização, o driver Xorg ativo e o TearFree somente quando apropriado.

Como configurar o firewall do SLES 15 com o firewall-cmd

Como configurar o firewall do SLES 15 com o firewall-cmd

Configure o firewalld no SLES 15: verifique as zonas, permita serviços ou portas, salve regras permanentes, recarregue com segurança e verifique o acesso.

Guia de configuração de aplicação de patches em tempo real no SLES: Aplique atualizações do kernel sem reiniciar.

Guia de configuração de aplicação de patches em tempo real no SLES: Aplique atualizações do kernel sem reiniciar.

Habilite a aplicação de patches em tempo real no kernel do SLES 15 SP7, aplique correções compatíveis sem reiniciar, verifique os patches ativos e entenda quando ainda é necessário reiniciar o kernel.

Como ativar o modo FIPS no SUSE Linux Enterprise Server 15

Como ativar o modo FIPS no SUSE Linux Enterprise Server 15

Ative o modo FIPS no SLES 15 com o utilitário de configuração compatível com a SUSE, reinicie com segurança, verifique o status do kernel e da política criptográfica e verifique os limites de certificação.

Como instalar o Google Chrome no Gooroom OS sem violar as políticas de segurança

Como instalar o Google Chrome no Gooroom OS sem violar as políticas de segurança

Instale o Google Chrome no Gooroom OS com segurança usando pacotes .deb oficiais, APT, verificações de políticas, orientações de atualização e correções para dispositivos gerenciados.

Como exportar logs do sistema SLES para um servidor Syslog remoto com segurança

Como exportar logs do sistema SLES para um servidor Syslog remoto com segurança

Encaminhe com segurança os logs do sistema SLES para um servidor syslog remoto usando rsyslog, certificados TLS, verificação de nome do par, filas, validação e testes.

Integração do Active Directory do SLES 15 com o SSSD: um guia passo a passo

Integração do Active Directory do SLES 15 com o SSSD: um guia passo a passo

Integre o SLES 15 ao Active Directory com o SSSD usando o YaST. Prepare o DNS e o horário, configure os logins de domínio, verifique o Kerberos e compare o SSSD, o Winbind e o realmd.

Fix Realtek RTL8821CE Wi-Fi Driver Issues on Pardus Linux

Fix Realtek RTL8821CE Wi-Fi Driver Issues on Pardus Linux

Fix RTL8821CE Wi-Fi on Pardus Linux by checking the built-in rtw88 driver, Realtek firmware, rfkill, NetworkManager, and safe fallback options.

Corrigir o problema "Falha temporária na resolução de DNS" no Debian 12 com systemd-resolved

Corrigir o problema "Falha temporária na resolução de DNS" no Debian 12 com systemd-resolved

Diagnosticar e corrigir falhas de resolução de DNS no Debian 12 com systemd-resolved, incluindo resolv.conf, NetworkManager, networkd, cache e verificação.

Como instalar o Pardus Linux em dual boot com o Windows 11 de forma segura

Como instalar o Pardus Linux em dual boot com o Windows 11 de forma segura

Instale o Pardus 25.2 ao lado do Windows 11 fazendo um backup, reduzindo o volume do Windows, inicializando a partir de um USB UEFI e protegendo as partições EFI e de recuperação existentes.