Когда я пытаюсь выполнить
scp user1@host1:somfile user2@host2:somfile
я получил
Host key verification failed.
lost connection
Аутентификация на обоих хостах основана на ssh-key, однако по соображениям безопасности закрытый ключ хранится только на хосте, который выдает указанную выше команду.
Еще одна сложность в этой настройке заключается в том, что host2 поддерживает только SFTP, поэтому к нему нет доступа к оболочке.
Я тестировал более старую комбинацию openssl / openssh (Debian lenny openssh-client 5.1) и последнюю версию openssl / openssh, созданную из исходных кодов (openssl 1.0.0c, openssh 5.8). Такое же поведение.
Также стоит упомянуть, что выполнение
scp user1@host1:somfile somfile
scp somfile user2@host2:somfile
последовательно через временный файл работает.
Что я здесь делаю не так?
До OpenSSH 5.7 копирование между двумя хостами выполняется напрямую. Другими словами, связь с host2
сделан из host1
, с помощью host1
Список известных ключей хоста.
Можете добавить host2
к known_hosts
файл в host1
, просто подключившись к нему. Затем используйте экспедирование агента позволить host1
аутентифицироваться с помощью локально запущенного агента:
ssh -oForwardAgent=yes host1 ssh host2 true
scp -oForwardAgent=yes user1@host1:somfile user2@host2:
(ssh
есть ярлык -A
для этого варианта. Его также можно добавить в ~/.ssh/config
.)
В 5.7 и более поздних версиях вы можете использовать scp -3
чтобы сделать копию через ваш компьютер:
scp -3 user1@host1:somfile user2@host2:
Вероятно, это будет намного медленнее из-за host1
→ ты → host2
.
Разве у вас не запущен ssh-agent?