Como montar o SSHFS remoto via máquina intermediária? Tunelamento?


26

Gostaria de montar um sistema de arquivos remoto (A) usando SSHFS, mas às vezes tenho endereço IP, cujo acesso não é permitido. Então, meu plano é acessá-lo através de outra máquina (B) nessa rede. Preciso montar A em B e depois montar B (e A) no meu computador local? Tem algum jeito melhor de fazer isso?

Atualizar

Apenas para esclarecer o procedimento:

Primeiro, eu faço um túnel

ssh -f user@machineB -L MYPORT:machineA:22 -N

E então eu monto o sistema de arquivos remoto

sshfs -p MYPORT user@127.0.0.1:/myremotepath /mylocalpath

Está correto?

Como destruo o túnel quando termino?


1
melhor maneira de configurar túnel é ter conexão com B da tela GNU janela usando usuário ssh @ MachineB -L 2222: machineA: 22 -N assim você pode facilmente matá-lo com ^ C
edk

Respostas:


9

sim tunelamento. Você conecta a máquina B, cria o túnel local (-L) à porta SSHd da máquina A e depois sshfs ao localhost à porta do túnel recém-criado.


O comando a seguir é o caminho certo para fazer isso? ssh -f user@machineB -L 25:machineA:25 -N
Andrei

1
sim se você tem escuta sshd à porta 25 na máquina A. então você vai ter que sshfs -p 25 user@127.0.0.1: / path / localpath
edk

1
Aha, então para a configuração padrão do ssh eu preciso ssh -f user@machineB -L 22:machineA:22 -N, certo?
Andrei

16

Você pode usar a opção ssh_commandde sshfspara fazer o truque:

sshfs ma: /mnt -o ssh_command='ssh -t mb ssh'

Desmonte com o habitual

fusermount -u /mnt

Desculpe, isso é 7 anos atrasado ...


5
Com a nova opção -J no OpenSSH 1.1 é algo ao longo: ma sshfs: / mnt -o ssh_command = 'ssh -J mb'
Ohad Rubin

0

Seu esquema de conexão: Your machine --> Host B --> Host A

Nossa solução usará o Proxy Jump, introduzido no OpenSSH 7.3 , portanto, você precisará verificar se sua versão é mais recente com:

ssh -V

Então você precisa configurar corretamente o seu ~ / .ssh / config. Por exemplo, se machineB estiver disponível com um login de senha da machineA :

machineB
    HostName {machineB ip address}
    User {machineB username}
    Port {machineB port-number}
    IdentityFile ~/.ssh/{machineB private ssh key}

machineA
    ProxyJump machineB
    Hostname {machineA ip address, maybe in local network}
    User {machineA username}
    Port {machineA port-number}

Por fim, crie seu ponto de montagem e adicione linha ao / etc / fstab

machineB:{machineB mount path}  {your local mountpoint}  fuse.sshfs delay_connect,_netdev,user,idmap=user,follow_symlinks,identityfile={local path to machineB private key},default_permissions,uid={local user uid},gid={local user gid} 0 0

Isso tem algum benefício em relação ao uso apenas -o ssh_command="ssh -J machineB"?
clemisch
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.