![SCP-файлы между двумя виртуальными машинами](https://rvso.com/image/1345309/SCP-%D1%84%D0%B0%D0%B9%D0%BB%D1%8B%20%D0%BC%D0%B5%D0%B6%D0%B4%D1%83%20%D0%B4%D0%B2%D1%83%D0%BC%D1%8F%20%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC%D0%B8%20%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8.png)
У меня есть 2 виртуальные машины. Первая виртуальная машина — это место, где хранятся исходные файлы. Вторая виртуальная машина — это место, где находится мой скрипт bash, и он должен копировать файлы из исходного кода на мою вторую виртуальную машину.
Как это сделать в Bash?
Возможно ли SCP-файлы с 1 виртуальной машины на 2-ю виртуальную машину в Bash, когда мой скрипт запущен на 3-й машине? Если да, то, пожалуйста, покажите мне, как это сделать.
решение1
Это возможно (при условии, что оба хоста прослушивают SSH и первый удаленный хост может видеть второй)! Почему бы вам не попробовать?
scp remote1:/path/to/file remote2:/path/to
Возможно, вам придется указать имена пользователей и/или пароли для обоих этих хостов (если ваше имя пользователя различается на разных компьютерах).
Если вы используете аутентификацию на основе агента с включенной переадресацией агентов, вам не нужно будет предоставлять никаких паролей (это мой предпочтительный метод работы).
Обратите внимание, что это не имеет ничего общего с Bash (или даже виртуальными машинами) и должно работать в любой оболочке.
решение2
Обычный способ сделать это — подключиться по ssh к одной из удаленных машин и запустить scp оттуда.
#3rd-vm> ssh 2nd-vm
#2nd-vm> scp file 1st-vm:~/
решение3
Если вам нужно подключить его через третью машину, вы можете сделать это с помощью ssh следующим образом:
ssh remote1 cat file | ssh remote2 'cat > file'
Или с помощью tar:
ssh remote1 tar cf - path/to/copy | ssh remote2 tar xf - -C path/to/dest