Se você mantiver uma máquina remota, pode ser realmente útil montar o sistema de arquivos da máquina localmente para mover arquivos. MacFuse e sshfs
tornam isso realmente fácil, embora configurá-lo e montá-lo automaticamente no login pode ser um pouco complicado.
Primeiro, certifique-se de que você pode fazer ssh em seu computador remoto sem digitar uma senha. Faça o setup em Leopard finalmente suportando o ssh-agent no login e verifique se funciona:
ssh USER@HOSTNAME:
Se você fizer login sem solicitar uma senha ou chave de acesso, estará pronto para prosseguir.
Em seguida, instale sshfs
e MacFuse de acordo com Instalando sshfs 1.9 com o MacFuse 1.7 no OS X Leopard 10.5.5 .
Descubra onde você quer montar seu volume remoto. Eu não recomendaria usar /Volumes
, pois parece que o OS X exclui automaticamente os diretórios quando você desmonta as coisas. Então, em vez disso, usei /mnt/HOSTNAME
mkdir -p /mnt/HOSTNAME
(Obviamente, você substituirá HOSTNAME
pelo nome do seu servidor remoto.)
Em seguida, certifique-se de montar seu site remoto como um volume sem especificar uma senha usando sshfs
:
sshfs USER@HOSTNAME:PATH /mnt/HOSTNAME -oreconnect,allow_other,volname=VOLUME_NAME
Defina VOLUME_NAME como desejar para que seu volume seja nomeado no Finder. Eu usei HOSTNAME. PATH é opcional; configurá-lo para qualquer diretório que você deseja montar no host remoto. Se não estiver definido, ele usará seu diretório pessoal.
Se você não receber mensagens de erro,
e quando você faz um ls /mnt/HOSTNAME
os arquivos remotos aparecem, então você está pronto para prosseguir para a próxima etapa.
Desmonte o volume que acabou de montar:
umount /mnt/HOSTNAME
Agora vem a parte complicada. Você precisará criar um item do LaunchAgent para montar seu volume no login. Isso em si é bem fácil. No entanto, se o seu sistema for parecido com o meu, este item não terá seu SSH_AUTH_SOCK configurado corretamente, por isso não será possível efetuar login no host remoto sem usar uma senha. Você terá que definir manualmente o SSH_AUTH_SOCK você mesmo.
Primeiro, crie um wrapper em torno de sshfs
que definirá o SSH_AUTH_SOCK para você. Coloque isso em um arquivo onde você quiser.
Sugiro /opt/local/bin/sshfs-authsock
.
#!/bin/bash
export SSH_AUTH_SOCK=$(ls -t /tmp/launch-*/Listeners | head -1)
/opt/local/bin/sshfs $*
Basicamente, este arquivo configura SSH_AUTH_SOCK para o soquete mais recente em seu diretório tmp. Na maioria dos casos, isso deve ser o correto. É improvável que ele falhe, e não há nenhum problema de segurança.
Agora você pode finalmente criar o arquivo plst launchd. Coloque isso em
~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs.plist
(Se o caminho do seu host for, digamos, foo.niskala.org
e seu PATH for /tmp
, o nome do arquivo resultante será org.niskala.foo.tmp.sshfs.plist
.
Esta é apenas uma convenção, fique à vontade para nomear o arquivo como você quiser,
realmente; mas precisa terminar em .plist
.)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>BACKWARDS_HOST_DNS.PATH.sshfs</string>
<key>ProgramArguments</key>
<array>
<string>/opt/local/bin/sshfs-authsock</string>
<string>USER@HOSTNAME:</string>
<string>/mnt/HOSTNAME</string>
<string>-oreconnect,allow_other,volname=VOLUME_NAME</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Agora carregue o arquivo plist e execute-o para ver se funciona.
launchctl load ~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs
launchctl start BACKWARDS_HOST_DNS.PATH.sshfs
Se você não vir mensagens de erro, veja se o volume foi montado corretamente:
ls /mnt/HOSTNAME
Se seus arquivos remotos aparecerem, ótimo! Você está feito!
Se não, use
launchctl unload ~/Library/LaunchAgents/BACKWARDS_HOST_DNS.PATH.sshfs
para descarregar o arquivo antes de editá-lo, use ps auxwww | grep sshfs
e kill
para localizar e eliminar qualquer sshfs
processos antes de tentar novamente.
Referências: