Вступление
При использовании таких команд, как scp
или rsync
с публичным IP-адресом вашего сервера, вы будете автоматически передавать файлы через (общедоступный) интернет. Если у вас есть два экземпляра с включенной частной сетью, вы также можете передавать эти файлы по частной сети и избежать дополнительных расходов за использованную полосу пропускания.
Предпосылки
- Два экземпляра (назовем их
server_a
и server_b
) с включенной частной сетью
- Оба экземпляра должны иметь частные IP-адреса, настроенные в одной подсети (см. Настройка частной сети ).
- Соединение SSH должно быть возможным между обоими экземплярами
- Пользователь, который не является пользователем root (назовем его
your_user
)
Генерация и использование ключей SSH
Передача файлов возможна с использованием аутентификации по имени пользователя и паролю, но гораздо безопаснее использовать ключи SSH. Генерация открытого и закрытого ключа описана в разделе Как генерировать ключи SSH? , Если вы решите пропустить этот раздел, вам придется вводить пароль удаленного пользователя в каждой команде.
Предполагая, что пара открытый-закрытый ключ server_a
находится в ~/.ssh/id_rsa
, вы можете выполнить следующую команду, чтобы передать ваш открытый ключ server_b
. Используйте частный IP-адрес server_b
.
ssh-copy-id [email protected]
При появлении запроса введите пароль для your_user
.
ssh-copy-id [email protected] /usr/bin/ssh-copy-id: INFO: Source of
key(s) to be installed: "/home/your_user/.ssh/id_rsa.pub" The
authenticity of host '192.168.0.101 (192.168.0.101)' can't be
established. ECDSA key fingerprint is
SHA256:g9dfqycqU25b567/HDjPTqaQqKhep/fysNCQAG9yJG4. ECDSA key
fingerprint is MD5:41:67:be:68:51:9b:38:a8:95:82:71:47:f1:35:39:66.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),
to filter out any that are already installed /usr/bin/ssh-copy-id:
INFO: 1 key(s) remain to be installed -- if you are prompted now it is
to install the new keys [email protected]'s password:
Number of key(s) added: 1
Теперь попробуйте войти в машину.
ssh [email protected]
Убедитесь, что были добавлены только те ключи, которые вы хотели.
Если вы теперь SSH из server_a
в server_b
, он больше не будет запрашивать пароль. Если пара открытого и закрытого ключей не находится в этом месте, ~/.ssh/id_rsa
вы можете указать его местоположение с -i
параметром ( этот параметр вам также понадобится с помощью команды scp
and rsync
).
ssh-copy-id -i /path/to/your/public_key [email protected]
ssh -i /path/to/your/private_key [email protected]
Передача файлов с помощью SCP
SCP обозначает Secure Copy и передает все данные через соединение SSH. Чтобы скопировать один файл, ~/myfile
из каталога server_a
в /tmp
каталог server_b
мы можем выполнить следующую команду.
scp ~./myfile [email protected]:/tmp
Чтобы скопировать всю папку со всем ее содержимым (включая символические ссылки), вы можете добавить -r
опцию
scp -r ~./mydir [email protected]:/tmp
Передача файлов с помощью Rsync
Rsync - это универсальный инструмент для копирования файлов, он чаще всего используется для синхронизации содержимого двух мест. Он использует тот же безопасный туннель SSH для передачи данных. Полная папка может быть синхронизирована с удаленным /tmp
каталогом с помощью следующей команды
rsync -av ~/mydir [email protected]:/tmp
-v
Опция увеличивает подробность , так что вы можете следить за ходом передачи. -a
Опция позволяет «архивный режим» , который копирует файлы рекурсивно, сохраняя атрибуты , как владельца, группы и права доступа.