scp user1 @ host1: algum arquivo user2 @ host2: somefile

2

Quando tento executar uma

scp user1@host1:somfile user2@host2:somfile

Eu obtenho

Host key verification failed.

lost connection

A autenticação para ambos os hosts é baseada na chave ssh, no entanto, por razões de segurança, a chave privada é armazenada apenas no host que emite o comando acima.

Outra complicação nessa configuração é que host2 é somente SFTP, portanto, não há acesso ao shell.

Eu testei com uma combinação mais antiga do openssl / openssh (Debian lenny openssh-client 5.1) e com as versões mais recentes do openssl / openssh construídas a partir do código-fonte (openssl 1.0.0c, openssh 5.8) também. Mesmo comportamento.

Também é importante mencionar que a execução

scp user1@host1:somfile somfile

scp somfile user2@host2:somfile

sequencialmente através de um arquivo temporário funciona.

O que estou fazendo de errado aqui?

    
por garbeam 04.02.2011 / 11:42

2 respostas

6

Até o OpenSSH 5.7, a cópia entre dois hosts é feita diretamente. Em outras palavras, a conexão com host2 é feita de host1 , usando a lista de teclas de host conhecidas de host1 .

  • Você pode adicionar host2 ao arquivo known_hosts em host1 , simplesmente conectando-se a ele. Em seguida, use o encaminhamento de agente para permitir que host1 autentique usando seu agente localmente em execução:

    ssh -oForwardAgent=yes host1 ssh host2 true
    
    scp -oForwardAgent=yes user1@host1:somfile user2@host2:
    

    ( ssh tem um atalho -A para esta opção. Também pode ser adicionado a ~/.ssh/config .)

  • Na versão 5.7 e posterior, você pode usar scp -3 para forçar a cópia a ser feita através do seu computador:

    scp -3 user1@host1:somfile user2@host2:
    

    Isso provavelmente será muito mais lento devido a host1 → você → host2 .

por 04.02.2011 / 12:28
-1

Você não tem o ssh-agent em execução, não é?

    
por 04.02.2011 / 11:51

Tags