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

scp user1 @ host1: somefile user2 @ host2: somefile

Когда я пытаюсь выполнить

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?