Uma das coisas que sempre considerei irracional no Linux, em pessoas que não precisam lidar com Windows, é para o quê usar SAMBA/CIFS.

Ruim de configurar, não se casa muito bem com Linux. E tem o NFS, que infelizmente não é lá muito melhor no quesito simplicidade (quando usando credenciais, necessitando de Kerberos), na verdade, consegue ser ainda pior, requerendo módulos de kernel que a distribuição as vezes não empacota.

Mas tem algo que todo usuário um pouco mais avançado conhece, e que todo servidor remoto que tem instalado por padrão: o SSH.

Sabia que você pode usar o SSH também como sistema de arquivos? Lhe apresento o SSHFS.

Basicamente, ele é um sistema de arquivos FUSE que permite usar o SFTP do SSH como um sistema de arquivo montado em uma pasta, como qualquer outro sistema de arquivos no Linux.

Configurar SSHFS

Este tutorial tem em mente usuários Gentoo, e o autofs talvez seja inútil em SystemD, pois ele tem seus próprios mecanismos de auto montagem.

Para usa-lo, instale o módulo FUSE na sua distribuição Linux preferida. No Gentoo, basta: emerge –ask -v net-fs/sshfs

Com isto, basta gerar o par de chaves para ser utilizado pelo sistema (lembre-se, esse é um tutorial de autofs, caso queira usar sshfs montado manualmente pelo usuário, basta usar sua chave atual ou gerar outra, mas use a pasta .ssh de seu usuário invés do root):

ssh-keygen -t ed25519 -C “email@email.com

Não defina uma senha para esse arquivo se o objetivo for ajustar o autofs ou mesmo montar o compartilhamento remoto no boot do sistema.

Mova os dois arquivos (id_ed25519 e id_ed25519.pub) para a pasta .ssh do seu usuário root do PC local, que no Gentoo é /root/.ssh.

Servidor remoto

No seu sistema remoto, entre com o usuário ao qual você pretende usar para compartilhar arquivos (em sistemas domésticos, é o usuário que você faz tudo nele), crie o arquivo $HOME/.ssh/authorized_keys, e cole que o conteúdo do seu id_ed25519.pub. Se este arquivo já existir, basta colar em uma nova linha.

O SFTP já deve estar habilitado por padrão na configuração de seu servidor, nunca vi um que não estivesse, nem mesmo OpenBSD (até o dia que este artigo foi redigido), portanto além do escopo desse tutorial. Nada mais ser feito aqui.

Sistema local

De volta ao seu sistema, supondo que queira usar a pasta /mnt/Array como ponto de montagem local, teste se já consegue montar uma pasta remota em seu PC.

No comando abaixo, troque o nome do usuário antes do @ pelo o qual está com a chave pública do seu usuário, e após o @ pelo IP de sua máquina (neste exemplo, está sendo utilizado IPv6). Após o :, está o caminho da pasta remota que deseja tornar local em seu PC. Lembre que seu usuário remoto necessita ter acesso de leitura nessa pasta para a montagem funcionar.

    fbugno@Wilhelm ~ $ sudo sshfs -o rw,allow_other,reconnect,transform_symlinks sshfs@[fdcd:79d:25ec:321::2]:/Array /mnt/Array/
    fbugno@Wilhelm ~ $ ls /mnt/Array  
    Albuns Anime Backups bin Downloads EBooks Emuladores Series Vídeos
    fbugno@Wilhelm ~ $ df /mnt/Array
    Sist. Arq.                                Blocos de 1K      Usado Disponível Uso% Montado em
    sshfs@[fdcd:79d:25ec:321::2]:/Array   7813562368 5521922592 2282355296  71% /mnt/Array

Se não foi emitido erros, seus arquivos da pasta remota /Array (neste exemplo, sua pasta remota terá outro nome), os arquivos estarão disponíveis localmente em /mnt/Array.

Caso queira tornar mais fácil o uso pelo sistema inteiro desse monto de montagem, edite seu arquivo /etc/fstab adicionando mais uma linha ao final com seu servidor SSH:

    /dev/nvme0n1p1                                /boot      vfat   defaults,noatime   0 2
    UUID=2c5b2315-859e-4631-bef9-6d4a10bf7ef6     /          f2fs   defaults,noatime   0 1
    UUID=0f50815f-4e93-4476-99c3-2044d5656a9d     none       swap   sw                 0 0      
    sshfs@[fdcd:79d:25ec:321::2]:/Array     /mnt/Array sshfs  rw,allow_other,reconnect,transform_symlinks,IdentityFile=/root/.ssh/id_ed25519,noauto  0 0

Assim será possível montar a parta remota apenas com o comando mount /mnt/Array.

Autofs

O primeiro passo é instalar o autofs:

emerge -av autofs

E adicionar na inicialização do sistema.

rc-update add autofs default

Na configuração do autofs, abra o arquivo /etc/autofs/auto.master e adicione o seguinte:

    /- /etc/autofs/auto.sshfs --timeout=30

Então, crie o arquivo /etc/autofs/auto.sshfs com o seguinte:

    /mnt/Array     -fstype=fuse,rw,allow_other,reconnect,transform_symlinks,IdentityFile=/root/.ssh/id_ed25519 :sshfs\#sshfs@[fdcd:79d:25ec:321::2]\:/Array

Sim, antes do # tem o tipo de sistema de arquivos do FUSE, e após ele, o nome de usuário do seu servidor remoto, o que será utilizado para acessar os arquivos.

Antes de reiniciar o sistema, teste para ver se funcionou corretamente: sudo automount -f -v

E em outro terminal, tente acessar a pasta /mnt/Array e veja se os arquivos remotos apareceram. Se sim, está tudo ok.

Reinicie o sistema. Caso você esteja sem rede, ao tentar acessar /mnt/Array, o seu terminal aguardará 30 segundos antes de lhe retornar o comando.