Image default
How To

Monte sistemas de arquivos remotos sobre SSH com o SSHFS

Regularmente precisamos transferir arquivos entre servidores/estações de trabalhos. Diversas formas podem ser utilizadas para se fazer isso. Podemos utilizar, por exemplo, o FTP, SSH, protocolo SMB (compartilhamento de arquivos via rede) o HTTP e outros.

Existe um tal de NFS (Network File System), que nada mais é do que um sistema de arquivos via rede (assim o comos os HDs que também possuem um sistema de arquivos, algo como o NTFS, ext4 ou FAT32), e possui a função de compartilhar arquivos e diretórios entre os computadores conectados em uma rede, formando uma espécie de “diretório virtual”.

O funcionamento pode ser semelhante ao que é feito pelo Samba ou pelo compartilhamento de arquivos do Windows, mas a grande diferença é que no caso do NFS, você virtualizará um sistema de arquivos na rede, algo que não é feito pelo Samba ou Windows, pois estes tem a função de compartilhar diretórios e arquivos.

Mas como nem tudo é um mar de rosas, o time composto pelo NFS e Samba (Protocolo SMB), possuem falhas de segurança que permitem a usuários internos terem acesso às informações que trafegam na rede. Isto ocorre porque não possuem mecanismos de criptografia, que servem para dar mais privacidade e segurança às informações.

SSHFS

É aí que entra o SSHFS. Ele possui as mesmas funcionalidades do NFS, com a diferença de que funciona sob o protocolo SSH, implementando recursos de criptografia às informações.

Vou citar dois cenários, onde um ou ambos poderão ser úteis para você em algum momento.

Cenário 1

Cenário 1

Neste cenário temos dois servidores Linux, onde um é servidor e cliente ao mesmo tempo, pois ambos dependem de algum recurso existente no outro servidor. Pense em um sistema que ao ser “bootado” precisa acessar determinado diretório localizado em outro servidor.

Sistemas de monitoramento de rede, como o Zabbix ou FlexVision, possuem uma configuração que permite dividir os serviços em várias máquinas, sendo o SSHFS de grande utilidade neste caso.

Cenário 2

Cenario1

Já neste cenário você é um desenvolvedor web e está codificando remotamente aplicativos localizados no servidor privado virtual (Virtual Private Virtual/VPS rodando Linux) de uma empresa de hospedagem de sites. A estação de trabalho possui uma versão client do SSHFS, que montará em seu sistema o sistema de arquivos do servidor remoto, que possui o SSHFS Server instalado.

1 – Pré-requisitos

Para os servidores, o serviço SSH já deverá estar instalado. Antes de realizar a configuração explicada no cenário 1, veja o post Acessando servidores SSH sem o uso de senha.

2 – Instalando o SSHFS no servidor

Em nossa configuração o servidor terá o sistema operacional GNU/Linux Fedora 23. Para instalar o SSHFS digite o seguinte comando no terminal:

sudo dnf install sshfs

Para versões anteriores ao 23, digite:

sudo yum install sshfs

3 – Instalando na estação de trabalho

Para instalar o SSHFS no Windows, você precisará fazer o download da última versão do pacote win-sshfs localizada no repositório do Google Code. O link para download está localizado logo abaixo. Após o término do download, clique duas vezes sobre o arquivo para carregar o instalador. Provavelmente você será solicitado(a) a fazer download de arquivos adicionais, sendo o caso, o instalador fará o download do .NET Framework 4.0 e o instalará para você.

https://win-sshfs.googlecode.com/files/win-sshfs-0.0.1.5-setup.exe

4 – REALIZANDO A CONFIGURAÇÃO DO CENÁRIO 1

4.1 – Criando os diretórios

Após completado os pré-requisitos, vamos pôr a mão na massa. Em cada servidor crie um diretório onde será montado o sistema de arquivos localizado no outro servidor.

sudo mkdir /mnt/nomeservidor

Além disso, será necessário criar o diretório que será compartilhado com o outro servidor. Vamos criar o seguinte caminho (crie este caminho em ambos os servidores):

sudo mkdir /opt/work/

4.2 – Montando o sistema de arquivos remoto

Conforme o post Acessando servidores SSH sem o uso de senha, configuramos o acesso ao servidor mediante o uso de certificado. Neste post, montaremos o sistema de arquivos remoto utilizando o seguinte comando:

sudo sshfs -o IdentityFile=~/.ssh/id_rsa usuariocompermissao@ipservidor:/opt/work/ /mnt/nomeservidor

Mas caso não queira utilizar este método, e sim através de usuário e senha, utilize o seguinte comando:

sudo sshfs usuariocompermissao@ipservidor:/opt/work/ /mnt/nomeservidor

Provavelmente você será solicitado(a) a fornecer a senha do usuário em questão.

Para montar permanentemente o sistema de arquivos, edite o arquivo /etc/fstab, adicionando a seguinte linha:

sshfs#usuariocompermissao@ipservidor:/opt/work/ /mnt/nomeservidor

Obs: Tenha em mente que há um potencial risco de segurança montar permanentemente um sistema de arquivos localmente. Se um dos servidores for comprometido, o atacante terá uma rota direta para o outro servidor. Não faça isso em servidores de produção.

5 – REALIZANDO A CONFIGURAÇÃO DO CENÁRIO 2

Esta é uma etapa simples. Caso já tenha seguido as configurações no cenário 1, vá para o ítem 5.2.

5.1 – Criando o diretório no servidor

Para o servidor, utilizaremos o diretório /opt/work, que será compartilhado com a estação de trabalho. Execute o comando abaixo para criá-lo:

sudo mkdir /opt/work

5.2 – Configurando o SSHFS na estação de trabalho Windows

Localize na área de trabalho o ícone de nome Sshfs Manager e clique duas vezes sobre ele para carregá-lo.

Conforme a imagem abaixo, preencha os dados conforme mostrado:

Configurando_SSHFS_Windows

Driver Name: informe o nome do atalho. Neste caso utilizei Oanalista;

Host: informe o endereço IP do servidor remoto;

Port: Porta do servidor SSH que está em execução no servidor remoto. A padrão é a 22, mas pode ser outra, dependendo da configuração efetuada.

Username: usuário (já deve existir no servidor) com permissão de acesso ao diretório compartilhado no servidor remoto;

Authentication method: é o método de autenticação. Deixe como Password.

Password: informa a senha do usuário em questão;

Directory: caminho do diretório que possui os arquivos a serem acessados pelo Windows. Se seguiu as informações até aqui, então informe diretório /opt/work.

Drive Letter: Letra do drive. Informe uma que estiver livre.

Mount at Login: Se esta opção estiver marcada, o Windows carregará o sistema de arquivos remoto sempre que for inicializado. Como citamos, se a estação de trabalho for comprometida, o invasor terá uma possível rota para o servidor. Utilize ferramentas eficazes de gerenciamento de senha, se for o seu caso.

Preenchido os campos acima, clique no botão Save e depois em Mount (para montar o sistema de arquivos remoto localmente na estação de trabalho).

5.3 – Acessando o sistema de arquivos remoto

Após montado o sistema de arquivos remoto, vamos acessá-lo.

Pressione a tecla com o símbolo do Windows + a letra “e”. Uma tela como a abaixo será mostrada:

Verificando_conf

Como pode ver, o sistema de arquivos remoto foi montado no Windows com o nome de “OAnalista”.

Nas propriedades desta unidade, vemos que foi identificada como um disco removível (pendrive, hd externo USB).

Propriedades_diretorio

Espero que tenha gostado deste how-to. Deixe sugestões, críticas, etc, etc.

Até a próxima!

Referência: DigitalOcean

Posts similares

CoffeeMiner: Hackeando redes wi-fi para minerar criptomoedas

O Analista

nShield: Uma solução Anti-DDoS baseada no iptables

O Analista

Cloakify Toolset: Extrusão de dados em texto puro

O Analista