Как использовать команду scp для копирования файлов между двумя удаленными серверами с моего локального ПК?
удаленный сервер 1: IP = 67.12.21.133 & amp; порт = 6774
удаленный сервер 2: IP = 67.129.242.40 & amp; port = 6774
scp -rp -P 6774 denny@67.12.21.133: /home/denny/testapp1.txt denny@67.129.242.40:
Выдает ошибку после ввода пароля 67.12.21.133,
ssh: соединение с хостом 67.129.242.40, порт 22: соединение отклонено
потеряно соединение
Я не нашел легкого решения, но Вы могли попытаться использовать sshfs следующий путь:
mkdir /tmp/h1
mkdir /tmp/h2
sshfs -p 6774 user1@host1:/public /tmp/h1
sshfs -p 2211 user2@host2:/data/src /tmp/h2
cp /tmp/h1/files.* /tmp/h2
fusermount -u /tmp/h1
fusermount -u /tmp/h2
Иначе мог быть должен использовать ssh (на самом деле не успешный протестированный):
ssh user1@host1 "cat /public/file.bin" | ssh user2@host2 "cat >/data/file.bin"
В настоящее время я не делаю нашел правильный способ ввести эти два пароля. Это просит несколько раз эти два пароля, но не принимает никого. Возможно, при обмене ssh ключами между хостами, это работает. Поскольку Вам, чем не нужны пароли.
Я надеюсь, что это помогает? Thomas
Можно использовать ~/.ssh/config
указывать порты для использования для хостов (и для установки многих других хороших вещей; проверьте страницу справочника man ssh_config
):
# ~/.ssh/config
Host 67.12.21.133
Port 6774
Host 67.129.242.40
Port 6774
При выполнении этого необходимо использовать опцию -3
к scp, который копирует файлы через Вашу локальную машину. Иначе scp дает scp команду через ssh на первом хосте, таким образом, это на самом деле работает
ssh -p 6774 denny@67.12.21.133 scp -rp /home/denny/testapp1.txt denny@67.129.242.40:
и затем ~/.ssh/config первого удаленного хоста (67.12.21.133) используется вместо Вашего локального.
Когда у Вас есть установка Ваш ~/.ssh/config
правильно, это должно работать:
scp -rp3 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:
Конечно, можно также скопировать содержание ~/.ssh/config файл на первый удаленный хост, и затем можно использовать scp без -3
опция, которая будет, вероятно, speeden передача.
Или можно использовать прием, что использование scp и использует такую командную строку:
ssh -p 6774 denny@67.12.21.133 scp -rp -P 6774 /home/denny/testapp1.txt denny@67.129.242.40:
(Отметьте другой случай параметра порта для ssh и scp: ssh -p 6774
по сравнению с. scp -P 6774
)
PS: Я получил эту информацию от OpenSSH bugzilla, где я ввел это как ошибку: https://bugzilla.mindrot.org/show_bug.cgi? id=2020
Согласно этой странице в блоге Linux Academy, вам просто нужно использовать опцию -P 6774
прямо перед вторым удаленным путем:
scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt -P 6774 denny@67.129.242.40:
Каждое использование флаг -P
применяется только к следующему месту в командной строке, а не ко всей команде. Любое местоположение, которое не имеет -P
между ним и предыдущим путем (или именем команды [scp
]), по умолчанию использует стандартный порт (22).
Если вам нужно перенести данные с одного сервера на другой, используйте команду SCP. Для этого
Просто нажмите Ctrl kbd> + Alt kbd> + T kbd> на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду ниже.
scp -pr root@192.168.1.2:/path/to/files /destination/path
Примечание. Параметр -P можно использовать, если вы хотите указать номер порта.