sshfs + autofs


INTRODUÇÃO

Como apresentado em outro artigo neste blog, o SSHFS é uma ferramenta que usa o OpenSSH para habilitar a montagem de sistemas de arquivos remotos na máquina local, de forma transparente para o usuário.

Se tudo estiver configurado corretamente, SSHFS autentica conexões através do OpenSSH utilizando certificados digitais, garantindo que somente aqueles que devem ter acesso aos diretórios remotos possam montá-los e acessá-los.

DEPENDENCIAS

FUSE 2.2 ou posterior;
Glib2.0 ou posterior;


INSTALANDO O SSHFS EM DEBIAN-LIKE

sudo aptitude install sshfs autofs; ou
sudo apt-get install sshfs autofs;


INSTALANDO O SSHFS EM REDHAT-LIKE

sudo yum install sshfs autofs;

Escopo

No artigo Brito: Montando Compartilhamento Sob SSH (Secure Shell) em Shell, é apresentado apenas como montar um compartilhamento sobre o ssh.

Neste artigo, o foco é como configurar para que o compartilhamento sobre ssh, seja montado automaticamente pelo sistema, de modo a não ser necessário a intervenção manual, para tal será apresentado como gerar certificado de acesso, envio do certificado para máquina remota,preparação do ambiente para automontagem,configuração do autofs.

certificado de acesso

Gerar certificado RSA de 3Mb (Mega bits)


ssh-keygen -b 3072


Gerar certificado DSA 3Mb

ssh-keygen -b 3072 -t dsa

Envio do certificado para máquina remota

ssh-copy-id -i ~/.ssh/id_rsa.pub root@RemoteHost
ou
ssh-copy-id -i ~/.ssh/id_dsa.pub root@RemoteHost


Automontagem

Para realizar a automontagem faz-se necessário os locais pré-definidos, ou seja os diretórios que receberam as montagem remotas.

mkdir /media/sshfs


Configuração autofs

Os arquivos principais de configuração do autofs são /etc/auto.master e o arquivo de mapeamento, que usaremos o /etc/auto.sshfs.

E para iniciar a configuração faz-se necessário descobrir o userid, do usuário que tomará o processo.

Exemplo: Se por ventura o usuário brito será responsável pelo processo do autofs, deve-se utilizar userid deste usuário.

Como descobrir o userid

  • com o comando id:
    id brito
    uid=1000(brito) gid=1000(brito) grupos=1000(brito),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),109(lpadmin),124(sambashare)
    No campo uid=1000
  • com funcionalidades do bash:
    grep brito /etc/passwd
    brito:x:1000:1000:Ricardo Brito,,,:/home/brito:/bin/bash
    No terceiro campo :1000

configurar /etc/auto.master

No arquivo /etc/auto.master, é definido o mapa base de automantagem para autofs, e qual usuário será responsável pelo processo, usando o uid identificado anteriormente.

Este trecho abaixo deve ser acrescentado no arquivo.
/media/sshfs /etc/auto.sshfs uid=1000,gid=1000,--timeout=30,--ghost

Para cada arquivo de mapeamento deve ser acrescentado uma linha com suas configurações.



configurar /etc/auto.sshfs

O arquivo de mapeamento não exite, deve ser criado no ato de sua configuração.

Neste arquivo são definidos as permissões de cada compartilhamento.
mountpoint -fstype=fuse,rw,nodev,nonempty,allow_other,reconnect,uid=1000,
gid=1000,max_read=65536,compression=yes,auto_cache,no_check_root,
kernel_cache :sshfs\#user@RemoteHost\:/remotedir

o mountpoint é o nome do diretório dinâmico que conterá o dados remotos, passando a existir a estrura /media/sshfg/mountpoint.

Exemplo:
mountpoint -fstype=fuse,rw,nodev,nonempty,allow_other,
reconnect,uid=0,gid=0,max_read=65536,compression=yes,
auto_cache,no_check_root,kernel_cache
:sshfs\#root@10.100.0.25\:/var/log/apache2
mountpoint: identificação local do compartilhamento remoto;
-fstype: permissões para o compartilhamento remoto no sistema de arquivos local;
:sshfs: tipo sistema de arquivos a ser mountado;
#root@10.100.0.25: usuário@RemoteHost
:/var/log/apache2: remotedir

Exemplo resumido:
lambda_apache2_log -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#root@10.100.0.25\:/var/log/apache2


Arquivo auto.sshfs completo:

Referencias

Brito: Montando Compartilhamento Sob SSH (Secure Shell) em Shell
Conexão com chaves assimétricas sem uso de senha em servidor sshd

Comentários

Brito disse…
permissão resumida:

lambda_apache2_log -fstype=fuse,rw,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#root@10.100.0.25\:/var/log/apache2