scp с одного удаленного сервера на другой удаленный сервер

Я просто удаюсь, сколько недавних снимков я хочу сохранить (28 в этом примере, включая тот, который я только что создал, который все еще находится на рассмотрении), затем удалите немного более старый, чем это:

for SNAPSHOT in `ec2-describe-snapshots | grep $THIS_EBS_VOLUME | grep -v pending | head -n -27 | awk '{print $2}'` ; do
  ec2-delete-snapshot $SNAPSHOT
done
15
02.08.2013, 18:20
4 ответа

Простой канал

Попробуйте это:

ssh one 'cat file' | ssh two 'cat > file'

Первый должен отправить содержание файла на Вашу машину, в то время как второе должно переслать это к второй машине. Я вычислил бы контрольную сумму в обоих концах после передачи, чтобы гарантировать, что ничто не потерялось или исказило по пути.

Тщательно продуманные туннели

Для более тщательно продуманных приложений Вы могли использовать туннели ssh. Например, Вы могли попробовать что-то вроде этого:

ssh -R 5001:127.0.0.1:5002 one
ssh -L 5002:127.0.0.1:22 two

Затем можно открыть соединение на one к машине localhost порт 5001 и это будет передано дважды и закончится как соединение на two кому: localhost порт 22. Это - ssh порт, таким образом, можно использовать это для еще одного scp, или для rsync, или что бы то ни было. Вы могли также запустить rsync сервер на two, и порт передачи 873 вместо 22. Или Вы могли использовать nc с обеих сторон передавать необработанные данные, с помощью произвольного номера порта.

Основное преимущество между вышеупомянутым подходом - то, что у Вас есть двухнаправленное соединение TCP между этими двумя машинами вместо однонаправленного канала только. Тем путем эти две стороны могут обмениваться информацией, которая особенно важна в rsync случай.

6
27.01.2020, 19:49
  • 1
    Спасибо! Это не делает точно, что я хотел, но в чем я на самом деле нуждался, который является большим. –  Jan Spurny 05.08.2013, 15:27

Так как у Вас есть пользовательский доступ к исходному серверу (тот), почему бы не войти и выполнить Вашу команду scp на том сервере непосредственно... Если Вы волнуетесь, что это займет слишком много времени, то запустите команду внутри a screen затем отсоединение с экрана с Ctrl+a d и позвольте ему работать.

Однако, если необходимо сделать это от рабочей станции, и ключи SSH с источника на целевой сервер работают хорошо, затем отправляют scp управляйте как параметр ssh команда, как:

ssh user@source 'scp /path/to/file user@destination:/path/to/file'
2
27.01.2020, 19:49
  • 1
    Спасибо, которое определенно работало бы, кроме тех серверов и отключило PasswordAuthentication и я не могу добавить ключи от одного до другого - они не должны мочь соединиться друг с другом. –  Jan Spurny 02.08.2013, 16:00

Поиск сообщения об ошибке: "Проверка ключа хоста перестала работать". казалось бы, был бы самой простой вещью сделать здесь. Я нашел это Вопросами и ответами на askubuntu названный: проблема соединения SSH с “Проверкой ключа хоста привела … к сбою” ошибка.

Один из ответов, которым Вопросы и ответы намекнули, что проблема лгала с конфликтующей записью в Вашем ~/.ssh/known_hosts файл. Можно или удалить неприятные записи из того файла с помощью любого текстового редактора, или можно использовать эту команду для удаления записей:

$ ssh-keygen -R hostname

Где hostname был бы или IP-адрес или название сервера, от которого Вы пытаетесь соединиться. Все вышеупомянутое было бы на хосте два между прочим.

0
27.01.2020, 19:49
  • 1
    я не уверен, понимаю ли я. Я могу ssh к one и two серверы от моей рабочей станции без любых проблем.. проблема запускается, когда я работаю scp one:file two:file от рабочей станции. И существуют, нет known_hosts файл или на один или два. Я просто попытался удалить ключи для два (даже, чтобы один был уверен) на моей рабочей станции, но ничто не изменилось (за исключением, Вы верный y/n propt). –  Jan Spurny 02.08.2013, 17:52
  • 2
    @JanSpurny - Ваше обращение к Вашей рабочей станции немного сбивало с толку в этом Q, по крайней мере, мне. Когда Вы говорите значение ноутбука/рабочего стола. Таким образом, Вы делаете что-то вроде этого, когда Вы говорите, что это "работает": scp workstation:file one:file и workstation:file two:file? Очевидно, Вы не должны говорить "workstation:file", я просто говорю это явно для пользы разговора. –  slm♦ 02.08.2013, 17:55
  • 3
    Хорошо, что я ment - то, что я выполнил все команды от своей рабочей станции. Таким образом, это больше было похоже: workstation$ scp one:file file и workstation$ scp file two:file. Так или иначе я думаю, что решил его. Я добавлю его как свой собственный ответ. –  Jan Spurny 02.08.2013, 18:06
  • 4
    @JanSpurny - Хорошо, довольный Вы поняли это. Спасибо за вопрос BTW! –  slm♦ 02.08.2013, 18:10

Полный кредит для этого ответа отправляется в https://superuser.com/6/602436/142948

Вам нужна опция -3 для SCP :

scp -3 one:/opt/bigfile.tar.gz two:/opt/bigfile.tar.gz

-3 : копии между двумя удаленными хостами передаются через Местный хост. Без этой опции данные копируются напрямую между два удаленных хоста.

http://www.openbsd.org/cgi-bin/man.cgi?query=scp&sektion=1

В противном случае 2-й псевдоним «два» разрешается на хосте «один» , что может не существовать.

16
27.01.2020, 19:49

Теги

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