SSHFS no CentOS, Slackware e Windows - Simples e rápido
O assunto não é novo, mas por sua grande utilidade, resolvi escrever este artigo, como uma pequena coleção de receitas prontas para os problemas mais comuns do dia a dia de quem precisa fazer backups remotos.
Introdução
O SSHFS é um sistema de arquivos remotos implementado sobre o FUSE (Filesystem on Userspace).
Seu funcionamento é semelhante ao de um cliente NFS, podendo o usuário interagir com arquivos em uma máquina remota como se estivesse localmente, com simplicidade e segurança.
As possibilidades de uso são amplas, especialmente para backups remotos em conjunto com ferramentas, como o Rsync.
Escolha a versão mais atual e compatível com sua plataforma (i386 ou x86_64) e instale-a logado como root:
# rpm -ivh fuse-sshfs-2.2-1.el6.rf.x86_64.rpm
Caso haja exigência de alguma dependência, poderemos instalá-la através do yum.
Serão necessários os fontes, que no caso, é o arquivo "sshfs-fuse-2.4.tar.gz" e o script de criação do pacote, que está no arquivo "ssh-fuse.tar.gz".
Este último sim, deverá ser descompactado com o comando:
tar -zxvf ssh-fuse.tar.gz
Por padrão ele descompactará o arquivo para um diretório "ssh-fuse", feito isso, copie o arquivo com os fontes para dentro deste diretório e dê permissão de execução para o arquivo "sshfs-fuse.Slackbuild", com o comando:
chmod +x sshfs-fuse.Slackbuild
Em seguida, execute-o
# ./sshfs-use.Slackbuild
O script compilará os fontes e gerará o pacote em /tmp/sshfs-fuse-2.4-x86_64-1_SBo.tgz, agora é só instalá-lo com o comando:
# installpkg /tmp/sshfs-fuse-2.4-x86_64-1_SBo.tgz
Se você tiver o ".NET framework 4.0" instalado, basta instalar o Dokan, que pode ser baixado de:
Caso não tenha, pode usar o instalador do "win-sshfs", que irá baixar e instalar automaticamente os componentes necessários.
Ele pode ser baixado de:
# sshfs [ip ou hostname da maquina remota ipv4 ou ipv6]:/[diretorio da maquina remota que deseja montar na maquina local]/[ponto de montagem na maquina local]
Exemplo:
# sshfs 192.168.10.1:/home /mnt/sshfs
Se você estiver logado como root na máquina local, ele irá montar o diretório /home da máquina remota como root, no ponto de montagem /mnt/sshfs.
Ao executar o comando df, ele exibirá o volume remoto montado, como algo parecido com:
O SSHFS tem algumas opções bem interessantes que podem ser usadas sozinhas, ou em conjunto com outras, bastando para isso, preceder com a chave -o - É claro, cada uma delas.
Exemplo:
# echo "SeuPasword" | sshfs -o reconnect -o password_stdin seulogin@192.168.10.1:/home/seulogin /mnt/sshfs
No exemplo acima, o SSHFS montará o diretório do usuário, que chamei de "seulogin", sem solicitar password, e reconectará de forma transparente, em caso de perda de conexão.
Este método é particularmente interessante para o emprego em scripts de backup, em que você não tenha possibilidade de criar uma chave pública para conexão automática com SSH.
# echo "SeuPasword" | sshfs -p 999 -C -o reconnect -o password_stdin seulogin@192.168.10.1:/home/seulogin /mnt/sshfs
A chave -C do exemplo acima, faz a compressão dos dados e acelera consideravelmente a comunicação entre as máquinas.
Já a chave -p 999, diz para o cliente conectar-se á porta 999 TCP, se for o caso da máquina remota estiver escutando SSH na porta 999 TCP.
Exemplo:
Se o SSH estiver configurado para logar por uma chave pública, basta acrescentar a seguinte linha ao /etc/fstab:
Para configurar o seu SSH para logar sem solicitação de senha, veja a dica:
Para mais detalhes, consulte:
Bom trabalho a todos!
Seu funcionamento é semelhante ao de um cliente NFS, podendo o usuário interagir com arquivos em uma máquina remota como se estivesse localmente, com simplicidade e segurança.
As possibilidades de uso são amplas, especialmente para backups remotos em conjunto com ferramentas, como o Rsync.
Instalação
O cliente SSHFS não é instalado, por padrão, no CentOS e no Slackware, então, será preciso instalá-los manualmente.No CentOS
A instalação é muito simples, basta baixar o pacote em:Escolha a versão mais atual e compatível com sua plataforma (i386 ou x86_64) e instale-a logado como root:
# rpm -ivh fuse-sshfs-2.2-1.el6.rf.x86_64.rpm
Caso haja exigência de alguma dependência, poderemos instalá-la através do yum.
No Slackware
Baixe a versão mais recente em:Serão necessários os fontes, que no caso, é o arquivo "sshfs-fuse-2.4.tar.gz" e o script de criação do pacote, que está no arquivo "ssh-fuse.tar.gz".
Este último sim, deverá ser descompactado com o comando:
tar -zxvf ssh-fuse.tar.gz
Por padrão ele descompactará o arquivo para um diretório "ssh-fuse", feito isso, copie o arquivo com os fontes para dentro deste diretório e dê permissão de execução para o arquivo "sshfs-fuse.Slackbuild", com o comando:
chmod +x sshfs-fuse.Slackbuild
Em seguida, execute-o
# ./sshfs-use.Slackbuild
O script compilará os fontes e gerará o pacote em /tmp/sshfs-fuse-2.4-x86_64-1_SBo.tgz, agora é só instalá-lo com o comando:
# installpkg /tmp/sshfs-fuse-2.4-x86_64-1_SBo.tgz
No Windows
O cliente SSHFS para Windows é a biblioteca Dokan, licenciada sob a LGPL e emprega softwares adicionais sob a licença MIT.Se você tiver o ".NET framework 4.0" instalado, basta instalar o Dokan, que pode ser baixado de:
Caso não tenha, pode usar o instalador do "win-sshfs", que irá baixar e instalar automaticamente os componentes necessários.
Ele pode ser baixado de:
Usando o SSHFS
Seu uso é muito simples, a sintaxe das opções é parecida com a do cliente SSH do GNU/Linux:# sshfs [ip ou hostname da maquina remota ipv4 ou ipv6]:/[diretorio da maquina remota que deseja montar na maquina local]/[ponto de montagem na maquina local]
Exemplo:
# sshfs 192.168.10.1:/home /mnt/sshfs
Se você estiver logado como root na máquina local, ele irá montar o diretório /home da máquina remota como root, no ponto de montagem /mnt/sshfs.
Ao executar o comando df, ele exibirá o volume remoto montado, como algo parecido com:
192.168.10.1:/home 81915888 56897152 25018736 70% /mnt/sshfs
O SSHFS tem algumas opções bem interessantes que podem ser usadas sozinhas, ou em conjunto com outras, bastando para isso, preceder com a chave -o - É claro, cada uma delas.
Exemplo:
# echo "SeuPasword" | sshfs -o reconnect -o password_stdin seulogin@192.168.10.1:/home/seulogin /mnt/sshfs
No exemplo acima, o SSHFS montará o diretório do usuário, que chamei de "seulogin", sem solicitar password, e reconectará de forma transparente, em caso de perda de conexão.
Este método é particularmente interessante para o emprego em scripts de backup, em que você não tenha possibilidade de criar uma chave pública para conexão automática com SSH.
# echo "SeuPasword" | sshfs -p 999 -C -o reconnect -o password_stdin seulogin@192.168.10.1:/home/seulogin /mnt/sshfs
A chave -C do exemplo acima, faz a compressão dos dados e acelera consideravelmente a comunicação entre as máquinas.
Já a chave -p 999, diz para o cliente conectar-se á porta 999 TCP, se for o caso da máquina remota estiver escutando SSH na porta 999 TCP.
Montando automaticamente na iniciação do sistema operacional da máquina local
O SSHFS é muito versátil, podemos fazer com que ele monte automaticamente incluindo no /etc/fstab, os parâmetros de montagem são semelhantes aos do NFS.Exemplo:
Se o SSH estiver configurado para logar por uma chave pública, basta acrescentar a seguinte linha ao /etc/fstab:
sshfs#seulogin@192.168.10.1:/home/seulogin/ /mnt/sshfs fuse comment=sshfs,users,reconnect 0 0
Para configurar o seu SSH para logar sem solicitação de senha, veja a dica:
Para mais detalhes, consulte:
- man page online: SSHFS - man page « linux.die.net
- Site do projeto: SSH Filesystem « fuse.sourceforge.net
Bom trabalho a todos!