scp/sshfs на удаленной машине, не доступной напрямую

Возможно, название нужно изменить, но у меня следующая ситуация:

  • Я могу SSH к хозяину A

  • Из A я могу войти в систему B, но к ней нельзя получить доступ с моего компьютера. Название машины (а также ее ip) является только локальным.

  • Как я могу sshfs (и / или использовать scp) напрямую к машине B, без необходимости scp файлы из B->A, а затем с A-> моей машины. Я действительно так теряю производительность,

PS: я не могу изменить конфиги в A и B...

3 ответа

Решение

Если вы аутентифицируетесь в B с учетными данными, доступными на вашем компьютере (назовем его W), например, паролем / именем пользователя (а не ключами на A), вы можете создать SSH-туннель, например:

W $ ssh -L 1234:B:22 A

а потом

W $ ssh -p 1234 usernameB@127.0.0.1

или аналогично с scp и sshfs. И. е. порт 1234 на вашем локальном компьютере (обычно 127.0.0.1 или::1) перенаправляется на B, порт 22 с точки зрения A.

Если у вас есть netcat на хосте A, тогда ssh's ProxyCommand - ваш друг.

Отредактируйте ваш локальный.ssh/config следующим образом

Host B
    HostName B.internal.domain
    ProxyCommand ssh A nc %h %p 2> /dev/null

Затем, когда вы пытаетесь подключиться по ssh к хосту B: сначала он создает сеанс ssh с A, а затем туннелирует трафик через netcat (nc) на порт 22 (% h) хоста B (%p).

Какая ОС у вас и пункт назначения работает?

Если это Linux, то протокол Zmodem идеально подходит для того, что вы пытаетесь сделать.

Другие вопросы по тегам