2

Я хочу скопировать файл из сеанса SSH на мой локальный хост. Проблема в том, что сессия ssh недоступна с моего локального хоста, мне нужно сначала подключиться к промежуточному сеансу ssh (ssh1), а затем получить доступ к рассматриваемому сеансу ssh (ssh2).

До сих пор я пытался использовать scp следующим образом:

scp username@ssh1:username@ssh2:file .

Это соединяется с ssh1, но вместо того, чтобы соединиться с ssh2 следующим, он ищет файл username @ ssh2:file. Конечно, это работает:

1. ssh username@ssh1
2. scp username@ssh2:file .
3. exit 
4. scp username@ssh1:file .

но это отнимает много времени, особенно при вводе паролей. Есть ли лучший метод?

1 ответ1

0

Да, есть лучший метод. Используйте мастер-сессию SSH (более новые версии). Он создает сеанс управления, поэтому вам не нужно проходить аутентификацию в течение некоторого периода времени.

Это описано здесь:

https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing

Вероятно, все, что вам нужно, это отредактировать / создать ваш .ssh / config. Добавьте туда определения, которые управляют мастер-сессиями:

ControlMaster auto
ControlPath ~/.ssh/cm_socket/%r@%h:%p
ControlPersist 4h
ServerAliveInterval 30

Затем вы можете указать свое определение сервера первого прыжка, например:

Host first_hop
Hostname <your first host FQDN or IP>
User <your user>

И второй прыжок будет использовать ваш сервер первого прыжка в качестве прокси:

Host second_hop
Hostname <your second host FQDN or IP>
User <your user>
ProxyCommand ssh -W %h:%p first_hop

Не забудьте создать каталог ~/.ssh/cm_socket, а разрешения для конфигурации должны быть 644.

Тогда вы сможете использовать SSH или SCP напрямую со второго сервера. Там может быть больше серверов, связанных таким образом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .