Как скопировать файл из вложенного сеанса SSH в другой сеанс SSH на локальный хост?

531
J. Schoeters

Я хочу скопировать файл из сеанса 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 . 

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

2

1 ответ на вопрос

0
Jaroslav Kucera

Да, есть лучший метод. Используйте мастер-сессию 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 напрямую со второго сервера. Там может быть больше серверов, связанных таким образом.

Похожие вопросы