1️⃣ Скопировать файлы с одного сервера сначала к себе, а потом от себя на второй сервер. Я летом часто работаю по 4G, мне такой вариант не подходит. Как подвариант этого же варианта, копировать файлы на какой-то промежуточный сервер со скоростным интернетом.
2️⃣ Настроить аутентификацию между двумя серверами. Иногда это не хочется делать, а когда-то и невозможно. Для этого понадобится либо лишние сертификаты создавать, которые могут быть запаролены, либо включать аутентификацию по паролю. Я лично не против последнего, но часто её отключают.
Выйти из этой ситуации можно относительно просто без лишних телодвижений на серверах. На помощь придёт ssh-agent, который входит в состав ssh-client. Отдельно ставить не надо. Если его просто запустить, то он выведет свои переменные в терминал:
# ssh-agentSSH_AUTH_SOCK=/tmp/ssh-XXXXXXm7P5A8/agent.259; export SSH_AUTH_SOCK;SSH_AGENT_PID=260; export SSH_AGENT_PID;echo Agent pid 260;Нам нужно их загрузить в оболочку для последующего использования. Сделаем это так:
# eval `ssh-agent`Agent pid 266Проверяем переменные:
# env | grep SSH_SSH_AUTH_SOCK=/tmp/ssh-XXXXXXrrbmpN/agent.265SSH_AGENT_PID=266Теперь добавим свои ключи из ~/.ssh в ssh-agent:
# ssh-addПосмотреть все добавленные ключи можно командой:
# ssh-add -lПочти всё готово. Осталось разрешить проброс агента при ssh соединении. Для этого добавляем в конфигурационный файл
~/.ssh/config параметр для каждого сервера, к которому будем подключаться. Сервер можно указать как по ip адресу, так и по имени, в зависимости от того, как вы будете подключаться:Host 1.2.3.4 ForwardAgent yesHost srv-01 ForwardAgent yesВсё, теперь можно подключаться:
# ssh root@1.2.3.4Вы должны подключиться к серверу с пробросом агента. Проверьте это, зайдя в
/tmp подключенного сервера. Там должен быть сокет агента:root@1.2.3.4# ls /tmp | grep ssh-ssh-vSnzLCX7LWТеперь если вы куда-то будете подключаться по ssh с этого сервера, будет использоваться проброшенный ключ с вашей машины. То есть вы можете выполнить что-то вроде этого:
root@1.2.3.4# rsync -av /var/www/ root@5.6.7.8:/var/www/Данные с сервера 1.2.3.4 будут скопированы на сервер 5.6.7.8 с использованием сертификата с вашей рабочей машины. Прямой аутентификации с 1.2.3.4 на 5.6.7.8 настроено не будет.
Простой трюк, который можно использовать не только для копирования файлов. Подобную цепочку можно делать бесконечно длинной, но нужно понимать, что если вы захотите с сервера 5.6.7.8 подключиться куда-то дальше с этим же сертификатом, вам нужно будет на 1.2.3.4 так же настраивать проброс агента.
Тут важно понимать один момент, связанный с безопасностью. Когда вы подключились к какому-то серверу с пробросом агента, root пользователь этого сервера тоже получает доступ к этому агенту и может его использовать по своему усмотрению. Так что аккуратнее с этим. На чужие сервера на всякий случай так не ходите. И не включайте проброс агента по умолчанию для всех серверов и соединений. Когда он не нужен, отключайте.
#ssh