Mapear disco de rede no Mac via SSH – Gren
Gren / Blog / Mapear disco de rede no Mac via SSH
Esta atividade é dividida em 4 passos.
1. Instalação do FUSE e do SSHFS
2. Mapeamento da pasta remota
3. Configuração de autenticação sem senha, fazendo uso de chaves pública e privada
4. Criação dos arquivos batch para montagem e desmontagem da pasta remota
Este tutorial não irá abordar a parte do servidor linux. Considera-se que você já possua login e os devidos privilégios sobre a pasta que deseja mapear.
FAÇA O DOWNLOAD DO FUSE E DO SSHFS
Esses são os programas que possibilitam mapear a pasta remota e trabalhar com ela como se fosse uma pasta local.
Faça o download dos pacotes de instalação usando os seguintes endereços:
Baixe o arquivo osxfuse-N.NN.N.dmg
https://github.com/osxfuse/sshfs/releases
Baixe o arquivo sshfs-N.N.N.pkg
INSTALANDO O FUSE
De um duplo-clique sobre o arquivo osxfuse-N.NN.N.dmg para tornar o conteudo disponível
Clique no icone central para prosseguir.
Siga os passos da instalação: Introduction License, Destination Select, Installation Type, Instalation, Summary.
Será necessário aceitar a licença e digitar a senha de administrador.
INSTALANDO O SSHFS
De um duplo-clique sobre o arquivo sshfs-N.N.N.pkg para prosseguir com a instalação.
Os passos são semelhantes aos da instalação do Fuse: Introduction License, Destination Select, Installation Type, Instalation, Summary.
MAPEANDO A PASTA REMOTA
Pra isso, a pasta remota será "montada" em uma pasta física a sua escolha. Aqui será feito em "Documents/PastaRemotaOffLine".
Crie a pasta que será o ponto de montagem da pasta remota
mkdir /Users/usuariomac/Documents/PastaRemotaOffLine
Faça a montagem da pasta remota com o comando abaixo
sshfs usuarioremoto@nnn.nnn.nnn.nnn:/pastacompartilhada /Users/usuariomac/Documents/PastaRemotaOffLine -o allow_other,auto_cache,IdentityFile=/Users/usuariomac/.ssh/id_rsa,modules=iconv,from_code=UTF-8,to_code=UTF-8-MAC,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,volname=PastaRemotaOnLine
usuarioremoto@nnn.nnn.nnn.nnn: Username e endereço do servidor
/pastacompartilhada: Endereço da pasta compartilhada no servidor
usuariomac: Username no Mac
O que faz cada uma das opções:
allow_other: Permite que outros usuários possam ver a pasta, caso seu mapeamento seja feito como administrador (sudo), esta opção deverá estar presente para que você mesmo possa visualizar.
IdentityFile=/Users/usuariomac/.ssh/id_rsa: Aponta para o arquivo de chave privada a ser utilizado para autenticação sem senha. Caso não exista, o sistema irá pedir sua senha de acesso ao servidor remoto. (Será configurado logo adiante)
modules=iconv,from_code=UTF-8,to_code=UTF-8-MAC: Esta configuração resolve o problema de acentuação e caracteres extendidos em nome de pastas e arquivos. Sem ela, as pastas contendo, por exemplo cedilha, ficam inacessíveis.
reconnect,ServerAliveInterval=15,ServerAliveCountMax=3: Efetua a reconexão automática no servidor e evita o travamento da aplicação em caso de instabilidade na rede.
volname=Nome da pasta remota após a conexão.
A lista com outras opções de montagem estão em:
https://github.com/osxfuse/osxfuse/wiki/Mount-options
DESCONECTANDO A PASTA REMOTA
umount /Users/usuariomac/Documents/PastaRemotaOffLine
CONFIGURANDO O ACESSO DIRETO / AUTOLOGIN SSH
Para que não seja necessário digitar a senha do servidor remoto toda vez que a conexão for feita, vamos configurar um sistema de autenticação baseado em chaves pública / privada.
Verifique se existem chaves já criadas
Caso não exista, vamos cria-las:
ssh-keygen -t rsa -b 4096 -C "meuemail@provedor.com"
Não é necessário digitar uma passphrase.
Ao final da criação será apresentada uma mensagem contendo o local onde as chaves foram salvas:
Your identification has been saved in /Users/usuariomac/.ssh/id_rsa
Your public key has been saved in /Users/usuariomac/.ssh/id_rsa.pub
Exporte a chave pública para a sua pasta no servidor
ssh-copy-id usuarioremoto@nnn.nnn.nnn.nnn
ssh usuarioremoto@nnn.nnn.nnn.nnn
O sistema deverá abrir a tela do terminal remoto sem exigir autenticação por senha.
CRIE ARQUIVO PARA CONEXÃO MANUAL
Para quem preferir conexão manual (meu caso), crie um arquivo Bash para efetuar a montagem da pasta remota.
PastaRemotaConectar.command:
cd /Users/usuariomac/Documents/PastaRemotaOffLine
type NUL > PastaRemotaConectar.command ; chmod u+x PastaRemotaConectar.command
echo -e "#! /bin/bash\n" >> PastaRemotaConectar.command
echo -e "sshfs usuarioremoto@nnn.nnn.nnn.nnn:/pastacompartilhada /Users/usuariomac/Documents/PastaRemotaOffLine -o allow_other,auto_cache,IdentityFile=/Users/usuariomac/.ssh/id_rsa,modules=iconv,from_code=UTF-8,to_code=UTF-8-MAC,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,volname=PastaRemotaOnLine\n" >> PastaRemotaConectar.command
echo -e "osascript -e 'tell application \"Terminal\" to quit' &\nexit\n" >> PastaRemotaConectar.command
MAPEAMENTO PERMANENTE
Este passo é opcional. Particularmente, prefiro fazer a conexão manual através do script apresentado anteriormente. Isto lhe dá mais controle, principalmente se você não desejar que a pasta remota fique conectada o tempo todo. De qualquer maneira, deixo registrado aqui as instruções para quem quiser fazer a montagem do volume remoto durante o boot.
A montagem da pasta remota será desfeita quando o computador for reiniciado. Para registrar o mapeamento durante a inicialização, edite o arquivo fstab. Basicamente, é o mesmo comando de montagem, mas com uma sintaxe um pouco diferente.
Abra o arquivo fstab:
Insira na ultima linha:
sshfs#usuarioremoto@nnn.nnn.nnn.nnn:/var/portables/sambashare /Users/usuariomac/Documents/PastaRemotaOffLine fuse defaults,_netdev,allow_other,auto_cache,IdentityFile=/Users/usuariomac/.ssh/id_rsa,modules=iconv,from_code=UTF-8,to_code=UTF-8-MAC,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,volname=PastaRemotaOnLine 0 0
Explicando algumas das opções adicionais:
fuse: Determina o sistema de arquivos.
defaults: Especifica as opções de montagem.
_netdev: Aguarda pela conexão de rede antes de tentar fazer a montagem da pasta remota.
Importante: Como esse mapeamento de inicialização é feito sob privilégios administrativos, os comandos manuais de montagem e desmontagem deverão ser executados como "sudo".
A pasta ficará em Documents.
Entre na pasta e execute o script PastaRemotaConectar.command. Aguarde alguns segundos…
Uma vez conectado, a pasta mudará de nome para PastaRemotaOnLine indicando que você já está na pasta remota