scp с удаленного хоста на локальный сервер в скрипте - PullRequest
0 голосов
/ 23 октября 2018

Мне удалось найти множество примеров переключения серверов и ProxyCommand, но ни одного из них, касающихся моей конкретной потребности.

Я хочу перенести файл с удаленного сервера на локальный сервер.В настоящее время я могу ssh от local до jump и от jump до distant (не могу ssh от локального до удаленного напрямую).Затем с distant я могу просмотреть файл обратно до local.Прямо сейчас я делаю это вручную:

из местного: ssh userJ@jump

затем из прыжка: ssh userD@distant

затем из дальнего: scp \path\file userL@local:\dest\path\

Но я хочу быть в состоянии сделать это в сценарии, который я запускаю из локальной системы.У меня есть rsh ключи, хранящиеся в соответствующих местах, чтобы исключить запросы пароля.Я просто не могу понять синтаксис для одной команды.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вам нужно "подтолкнуть" файлы на distant обратно к local?

Было бы проще просто "вытянуть" файлы, когда на local с distant.

Настройка ~/.ssh/config на local:

[userL@local]# cat ~/.ssh/config
Host distant
HostName Distant
user userD
ProxyCommand ssh -A userJ@jump nc %h %p

Проверьте соединение с помощью ssh:

[userL@local]# ssh -A userD@distant    [or even:  ssh -A distant]
Last login: Tue Oct 23 16:05:59 2018 from jump
[userD@distant]# 

Теперь извлеките файл из distant:

[userL@local]# scp userD@distant:/distantpath/distantfile /localpath/localfile
distantfile                100%  129KB 128.9KB/s   00:01
[userL@local]#

В приведенном выше примере я использовал переадресацию агента ssh для передачи учетных данных от local до jump и в конечном итоге distant.Вам просто нужно предварительно заполнить авторизованные ключи на jump и distant, прежде чем переадресация агента будет работать.

0 голосов
/ 23 октября 2018

Обычно я решаю эту проблему, настраивая мой ssh-клиент в файле ~/.ssh/config для автоматического перехода:

Host distant-jump
  User userD
  Hostname distant
  ProxyCommand ssh -q -W %h:%p jump

Host jump
  User userJ

Тогда вы можете просто: scp distant-jump:/path/file ./

...