Пытаюсь запустить rsync между двумя удаленными серверами через обратный проброс портов с помощью ssh-ключа

Использование конструкций shell,

uniq -c file | while read a b; do if (( $a & 1 == 1 )); then echo $b; fi done
1
13.04.2017, 15:36
2 ответа

Я бы порекомендовал использовать ssh agent - в этом случае вам понадобится только одна пара ключей, где ваша личная часть хранится на вашей рабочей станции. Нет необходимости реплицировать его на другие серверы (что само по себе плохая идея) или создавать другие пары ключей для определенных серверов.

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

eval ($ ssh-agent)

затем вы добавляете свой ключ (и) к агенту

ssh-add /path/to/private.key

Это спрашивает вас для парольной фразы, если ваш ключ защищен. После добавления вы можете без запроса подключаться к серверам, имеющим общедоступную часть.

Более того, вы можете продолжить ssh'ing с этого сервера на другой, и агент продолжит вашу аутентификацию, пока для параметра AllowAgentForwarding ssh-серверов на вашем пути установлено значение «да», то есть в основном настройка по умолчанию.

Ну, это было предисловие :)

А теперь вернемся к вашему случаю. Если переадресация портов не запрещена конфигурацией сервера, подход следующий:

  1. Убедитесь, что вы можете подключиться к SERVER2 с помощью агента -

ssh ubuntu @ SERVER1 'echo Hi from $ (hostname)'

  1. Проверьте работу переадресации вашего агента. с СЕРВЕРА1 на СЕРВЕР2

ssh -t ubuntu @ СЕРВЕР1 ssh СЕРВЕР2 'Привет, от $ (имя хоста)'

  1. Запустить соединение только с переадресацией портов

ssh -R localhost: 50000: СЕРВЕР2: 22 -Nv

и оставьте это окно терминала пока открытым.

  1. В новом окне терминала войдите на СЕРВЕР1 и оттуда проверьте, что порт перенаправлен в соответствии с запросом:

[SERVER1] ssh -p 50000 localhost 'echo Hi from $ (hostname)'

вы должны увидеть Hi from SERVER2

Если все 4 шага выше работают для вас, вы сможете выполнить команду rsync - просто опустите -i часть

1
29.04.2021, 00:16

Три шага:

  1. Создайте ~/.ssh/config на SERVER1 со всем необходимым для подключения к SERVER2, например:

    Host SERVER2
     Порт 50000
     Пользователь user2
     Имя хоста localhost
     IdentityFile ~/path/to/pem/file.pem
    
  2. Попробуйте подключиться к хостам SERVER2 без аргументов (с SERVER1 после инициирования проброса портов):

    ssh SERVER2 # работает?
    

    Если нет, добавьте -vvv и выясните, что пошло не так.

  3. Запустите команду rsync:

    ssh -i ~/path/to/pem/file.pem -R localhost:50000:SERVER2:22 ubuntu@SERVER1 \
     'rsync -vur /home/ubuntu/test SERVER2:/home/ubuntu/test'
    

Обратите внимание, что ключ аутентификации должен быть доступен на SERVER1, если вы хотите сделать это таким образом. Лучше создать новый ключ там, чем копировать закрытый ключ с вашей машины.

1
29.04.2021, 00:16

Теги

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