Я могу подключиться через ssh к двум хостам, скажем, host1 и host2, и мне нужно скопировать файлы с host1 на host2 через rsync .

Я знаю, что могу сначала выполнить копирование файлов с хоста 1 на локальный хост, а затем с локального хоста на хост 2 или выполнить простое копирование с помощью scp -3 <user1@host1:/file_path1> <user2@host2:/file_path2> , но моя цель - тест ssh туннель через rsync .

Кто-то может мне помочь?

Дополнительно:

Я читал о ssh туннеле, но не могу достичь своей цели ... возможно, есть кое-что, чего я не понял. Например, если я бегу

$ ssh -L 9999:host2:22 user_host1@host1

это означает: сопоставить мой локальный порт 9999 с портом 22 хоста2 и подключиться к хосту1 как пользователь user_host1, но ... с помощью этого сопоставления, какова цель подключения к хосту1?

2 ответа2

0
  • Предположим, вы не можете подключиться SSH напрямую с host1 на host2. (В противном случае проще всего напрямую подключить host1 к host2)
  • Предположим, невозможно подключиться с host1 или host2 к вашему ПК.

Следующая команда make rsync

ssh -R 127.0.0.1:9999:host2:22 user_host1@host1   rsync -e "ssh -p 9999" /file_path1 user2@127.0.0.1:/file_path2

Давайте разберем это:

  • SSH установить соединение с host1
  • -R 127.0.0.1:9999:host2:22 прослушивать удаленный (host1) шлейф на порту 9999 и пересылать соединение через клиентский хост на host2:22
  • на host1 rsync запустить
  • -e "ssh -p 9999" принудительно использует не ssh-порт по умолчанию для соединения
  • rsync локальный путь /file_path1 к удаленному пути user2@127.0.0.1:/file_path2 мы устанавливаем соединение с user2 @ host2, но в качестве адреса мы используем сопоставленный ранее петлевой порт

Я надеюсь, что не опечатка в команде.

UPD

Для устранения проблем попробуйте сначала подключить интерактивный SSH с туннелем

$ ssh -R 127.0.0.1:9999:host2:22 user_host1@host1

и ручное ssh соединение через туннель

[user_host1@host1 ]$ ssh -p 9999 user_host1@127.0.0.1

Туннелирование можно отключить в конфиге sshd на host1.

0

Прежде всего, благодаря mmv-ru: ваш ответ стал отличной отправной точкой для определения того, что было не так в моем случае.

Я написал ответ, чтобы объяснить шаг за шагом, что делать:

1 дистанционный шлейф

в одной консоли запустите ssh -R 127.0.0.1:9999:host2:22 user_host1@host1 -N

2 Работа на пульте

в другой консоли перейдите на сервер host1 ssh user_host1@host1 и запустите

rsync -e "ssh -p 9999" /file_path1 user2@127.0.0.1:/file_path2

в моем случае эта команда не выполняется, потому что мне нужно:

1 - добавьте [127.0.0.1]:9999 к моим известным хостам, нажав Да

2 - поскольку я использую ssh для host2 с помощью одного ключа, мне нужно добавить этот ключ в host1 и установить для него «permissions» 400.

Так что моя команда

rsync -e "ssh -p 9999 -i my_ssh_key_for_host2" /file_path1 user2@127.0.0.1:/file_path2

и работает !!!

3 ВСЕ В ОДНОМ

после шага 2 (создание ключа для host2 на удаленном host1) я могу выполнить все одной командой:

ssh -R 127.0.0.1:9999:host2:22 user_host1@host1 'rsync -e "ssh -p 9999 -i my_ssh_key_for_host2" /file_path1 user2@127.0.0.1:/file_path2'

Обратите внимание на одинарную цитату во второй части!

С Уважением,

Сим

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .