Назад | Перейти на главную страницу

SSH-туннелирование для копирования файла на удаленный сервер

Возможный дубликат:
Скопируйте файл с удаленного на локальный

Следующее работает должным образом, и я могу скопировать файл на localhost с сервера B, проходящего через сервер A.

ssh shantanu@10.10.10.10 "ssh shantanu@11.11.11.11 "cat /home/shantanu/backup_all_data.sql.zip "" > /home/shantanu/backup_all_data.sql.zip

Но как мне скопировать файл с localhost на сервер B?

Я считаю, что самый простой способ сделать это - настроить команду ssh proxy, которая позволяет мне использовать ssh напрямую на сервер B с моей рабочей станции, прыгая через сервер A.

В моем файле .ssh / config на моей рабочей станции я добавляю следующее:

Host serverB
    ProxyCommand ssh serverA nc -q 0 IP_of_serverB 22

Это говорит о том, что когда вы подключаетесь к хосту с именем «serverB», он фактически сначала устанавливает ssh-соединение с serverA, где запускает «nc» (netcat), который сбрасывает весь трафик в порт 22 на IP_of_serverB.

Когда вы подключаетесь, вы в первую очередь устанавливаете ssh-прокси-соединение с serverA (чтобы он запрашивал ваш пароль serverA), а затем он устанавливает настоящее ssh-соединение с serverB (поэтому он будет запрашивать ваш пароль serverB).

Как только это сработает, вы можете использовать scp напрямую на serverB, и он будет прокси через serverA

Для этого необходимо, чтобы на сервере serverA был установлен инструмент netcat (/ bin / nc). Если у вас его нет, вероятно, вы можете использовать другие инструменты, попробуйте выполнить поиск в Google по запросу ProxyCommand.

Есть и другие способы создания этой конфигурации с помощью макросов ssh_config и т. Д., Однако я считаю приведенный выше формат наиболее надежным.

Если у вас разные имена пользователей на serverA и serverB, вы также можете установить имена пользователей в файле конфигурации. Посетите страницу руководства ssh_config и найдите в Google "ssh ProxyCommand" для получения дополнительной информации.