Як встановити віддалений SSHFS через проміжну машину? Тунелювання?


26

Я хотів би встановити віддалену файлову систему (A) за допомогою SSHFS, але іноді у мене є IP-адреса, доступ з якої заборонений. Тож мій план полягає в тому, щоб отримати доступ до нього через іншу машину (B) у цій мережі. Чи потрібно мені встановити A на B, а потім встановити B (і A) на моєму локальному комп'ютері? Чи є кращий спосіб це зробити?

Оновлення

Просто для уточнення процедури:

Спочатку я роблю тунель

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

А потім монтую віддалену файлову систему

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

Це правильно?

Як я знищую тунель, коли закінчу?


1
кращий спосіб налаштування тунелю - це підключення до B через вікно екрана GNU за допомогою ssh user @ machineB -L 2222: machineA: 22 -N, щоб ви могли легко вбити його за допомогою ^ C
edk

Відповіді:


9

так, тунелювання. Ви підключаєте машину B, створюєте локальний тунель (-L) до порту SSHd машини A, а потім sshfs до localhost до порту новоствореного тунелю.


Чи є наступна команда правильним способом зробити це? ssh -f user@machineB -L 25:machineA:25 -N
Андрій

1
да , якщо у вас є Sshd прослуховує порт 25 на машині А , то ви просто повинні SSHFS -p 25 user@127.0.0.1: / шлях / LocalPath
ЕДК

1
Ага, значить, для налаштування ssh за замовчуванням мені потрібно ssh -f user@machineB -L 22:machineA:22 -N, правда?
Андрій

16

Ви можете використовувати опцію ssh_commandз sshfsзробити трюк:

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

Від’єднати зі звичайним

fusermount -u /mnt

Вибачте, що на 7 років пізніше ...


5
З новим варіантом -J в Openssh 1.1 це щось разом: sshfs ma: / mnt -o ssh_command = 'ssh -J mb'
Охад Рубін

0

Ваша схема підключення: Your machine --> Host B --> Host A

Наше рішення використовуватиме Proxy Jump, представлений у OpenSSH 7.3 , тому вам потрібно буде перевірити, чи ваша версія версії новіша:

ssh -V

Тоді вам потрібно правильно налаштувати ~ / .ssh / config. Наприклад, якщо machineB доступний із входом пароля від машиниA :

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}

Нарешті, створіть свою точку монтажу та додайте рядок до / 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

Чи має це користь від використання лише -o ssh_command="ssh -J machineB"?
Клеміш
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.