2016-12-07 3 views
0

Я хочу передать папку с сервера A на сервер B с помощью scp и 2 разных ключей .pem.Команда Scp между двумя серверами с двумя разными ключами .pem

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

scp -i ~/Documents/server1.pem -r [email protected]:~/location/to/dir -i ~/Documents/server2.pem ~/location/to/copy/to 

или я должен ввести:

scp -i ~/Documents/server1.pem -r [email protected]:~/location/to/dir -i ~/Documents/server2.pem [email protected]:~/location/to/copy/to 

Я просто не уверен, что со вторым местом, если мне нужно ввести хост или только местоположение. Большое спасибо за вашу помощь.

+2

"и будет ли она на самом деле работает"? Почему бы не попробовать и не увидеть? Удачи. – shellter

+0

'~/location/to/copy/to' - локальный путь; вам нужен префикс '[email protected]:' для указания удаленного адресата. – chepner

ответ

1

Создайте конфигурационный файл, как ~/scp_config:

Host src 
    HostName server1.com 
    User root 
    CertificateFile %d/Documents/server1.pem 

Host dest 
    HostName server2.com 
    User root 
    CertificateFile %d/Documents/server2.pem 

Затем запустите

scp -3 -F ~/scp_config src:\~/location/to/dir dest:\~/location/to/copy/to 
+0

Объяснение, почему вы использовали переключатель '-3', было бы неплохо. – Jakuje

+0

Я не знал о '-3', пока не прочитал ответ @ xhienne. Предположительно, вам нужно, если локальный 'scp' устанавливает соединения с двумя удаленными серверами, а не' scp' запрашивает 'server1' для подключения к' server2'. – chepner

+0

Извините за поздний ответ, нужно ли поместить scp_config в мой локальный каталог, а не на компьютер, который я переношу, а не на сервер A или B. С наилучшими пожеланиями – m33bo

0

Прежде всего, scp принимает только один параметр -i, поэтому ни одна из ваших команд не будет работать.

Далее вы не используете опцию -3. Это означает, что передача будет происходить непосредственно между сервером 1 и сервером2, без прохождения через ваш компьютер. В этом случае на сервере 1 будет храниться сертификат сервера2.

Одно решение уже было задано here. И если сервер 1 не может напрямую подключиться к серверу2, см. Также here для опции -3.

Другим решением является использование двух процессов ssh, каждый из которых имеет свой собственный вариант -i. Что-то вроде:

ssh -i ~/Documents/server1.pem [email protected] 'tar cz -C ~/location/to/dir .' \ 
| ssh -i ~/Documents/server2.pem [email protected] 'tar xz -C ~/location/to/copy/to' 

Примечания:

  • Таким образом, файлы проходят через вашу собственную машину, как scp «s -3 вариант
  • вы можете создать каталог назначения первым (добавьте mkdir -p команда до tar x)
  • вы можете использовать --no-same-owner в команде tar x, чтобы иметь файлы, принадлежащие root, а не их первоначальным владельцем
Смежные вопросы