Come montare SSHFS remoto tramite macchina intermedia? Tunneling?


25

Vorrei montare un file system remoto (A) utilizzando SSHFS, ma a volte ho un indirizzo IP, il cui accesso non è consentito. Quindi il mio piano è di accedervi tramite un'altra macchina (B) in quella rete. Devo montare A su B e quindi montare B (e A) sul mio computer locale? C'è un modo migliore per farlo?

Aggiornare

Giusto per chiarire la procedura:

Per prima cosa, faccio un tunnel

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

E poi monto il file system remoto

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

È corretto?

Come faccio a distruggere il tunnel quando ho finito?


1
il modo migliore per impostare il tunnel è avere una connessione a B dalla finestra dello schermo GNU usando ssh user @ machineB -L 2222: machineA: 22 -N in modo da poterlo facilmente uccidere con ^ C
edk

Risposte:


9

sì tunnel. Collegate la macchina B, create il tunnel locale (-L) alla porta SSHd della macchina A, quindi sshfs a localhost alla porta del tunnel appena creato.


Il seguente comando è il modo giusto per farlo? ssh -f user@machineB -L 25:machineA:25 -N
Andrei,

1
sì, se si dispone di sshd in ascolto sulla porta 25 sulla macchina A. Allora ti resta che SSHFS -p 25 user@127.0.0.1: / percorso / localpath
edk

1
Ah, quindi per l'installazione predefinita di ssh ho bisogno ssh -f user@machineB -L 22:machineA:22 -N, giusto?
Andrei,

15

Puoi usare l'opzione ssh_commanddi sshfsfare il trucco:

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

Smonta con il solito

fusermount -u /mnt

Mi dispiace, è in ritardo di 7 anni ...


5
Con la nuova opzione -J in Openssh 1.1 è qualcosa di simile: sshfs ma: / mnt -o ssh_command = 'ssh -J mb'
Ohad Rubin,

0

Il tuo schema di connessione: Your machine --> Host B --> Host A

La nostra soluzione utilizzerà Proxy Jump, introdotto in OpenSSH 7.3 , quindi dovrai verificare che la tua versione sia più recente con:

ssh -V

Quindi è necessario configurare correttamente ~ / .ssh / config. Ad esempio, se machineB è disponibile con un accesso tramite password 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}

Infine, crea il tuo mountpoint e aggiungi la linea a / 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

Questo ha qualche vantaggio rispetto al solo utilizzo -o ssh_command="ssh -J machineB"?
clemisch
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.