У меня есть один большой файл на сервере, one
и я хочу скопировать его на сервер two
с помощью scp
. У меня правильно настроены ключи, и я могу использовать ssh / scp для обоих серверов со своего рабочего стола.
Файл, который мне нужно скопировать, больше свободного места на жестком диске моей рабочей станции, поэтому я хотел сделать:
scp one:/opt/bigfile.tar.gz two:/opt/bigfile.tar.gz
но я получил:
ssh: Could not resolve hostname one: Name or service not known
У нас здесь нет DNS (не спрашивайте меня, почему), поэтому у меня есть это в моем ~ / .ssh / config:
Host one
Hostname <IP address of server one>
User jspurny
Host two
Hostname <IP address of server two>
User jspurny
Если я попробую файл меньшего размера и перенесу его one
на свою рабочую станцию, а затем на него two
, он будет работать нормально:
scp one:/opt/smallerfile.tar.gz .
scp smallerfile.tar.gz two:/opt/
При использовании IP-адресов напрямую, как предлагается в комментарии, я получил:
$ scp jspurny@<one's IP>:bigfile.tar.gz jspurny@<two's ip>:bigfile.tar.gz
Host key verification failed.
lost connection
Не ошибка:
Размер здесь не является проблемой - он был всего лишь «триггером» этой проблемы, поскольку bigfile.tar.gz
на моей рабочей станции не было никакого способа хранения . Проблема возникает независимо от размера файла.
Вопрос:
Почему команда:
scp oneremote:file secondremote:file
выдает ошибку независимо от того, используете ли вы .ssh/config
псевдонимы или напрямую IP-адреса?
Решенный - вроде - все еще ищущий объяснения - я разбил большой файл на более мелкие файлы и передавал их один за другим через свою рабочую станцию. Мне все еще интересно, почему это не сработало. Так что я все равно был бы признателен за объяснение того, что было не так ..
Нашел причину, почему это не удается: кажется, я был глупым. Я думал, что команда
scp one:file two:file
создавал два подключения к каждому серверу, а затем получал данные от одного и сразу отправлял их двум, действуя как ретранслятор.
Это явно не тот случай, потому что простая -v
опция показала, что он на самом деле просто соединяется с одним, а с одного он пытается соединиться с двумя . Что, очевидно, невозможно, поскольку сервер один не должен соединяться с двумя .