Eu tenho dois hosts remotos.
host1-> 10.3.0.1
host2-> 10.3.0.2
Ambos executam um servidor ssh.
O servidor ssh escuta na porta 22 no host1 e na porta 6969 no host2. Agora, usando minha máquina local, preciso copiar algo do host1 para o host2 sem fazer login no host1 ou host2 via ssh. Algo como,
scp [email protected]:/path/to/file [email protected]/path/to/file
Como posso fazer isso, observe que os dois hosts usam portas diferentes para o ssh.
-P
bandeira existe para especificar a porta a utilizar, em caso de transferência remota-to-remoto, ssh como nenhum comportamento definido sobre como especificar a porta per-host ...Respostas:
No passado, a maneira como
scp
funcionava, quando chamada ( ingenuamente ) para copiar arquivos entre sistemas remotos, era muito inconveniente: se você escrevesse, por exemploscp
primeiro abriria umassh
sessão no remote1 e, em seguida, executaria ascp
partir daí para o remote2. Para que isso funcione, você teria que configurar as credenciais de autorização para remote2 no remote1.A maneira moderna de fazê-lo, em vez disso, ( "moderna" porque foi implementado apenas alguns anos atrás, e talvez nem todo mundo tem um
-3
-capablescp
) requer duas etapas. A primeira etapa necessária é usar~/.ssh/config
para configurar todas as opções para a conexão com o remote1 e remote2, da seguinte maneira:Dessa maneira, torna-se possível passar todas as opções necessárias para o comando sem ambiguidades : por exemplo, se disséssemos na CLI usar a porta 2222 sem a configuração acima, não seria claro se estávamos nos referindo a remote1 ou remote2 , e da mesma forma para o arquivo que contém as chaves criptográficas. Dessa forma, a CLI permanece organizada e simples.
Em segundo lugar, use a
-3
opção da seguinte maneira:A
-3
opção instruiscp
a rotear o tráfego pelo PC no qual o comando foi emitido, mesmo que seja um terceiro participante da transferência. Dessa forma, as credenciais de autorização devem residir apenas no PC emissor, na terceira parte.fonte
~/.ssh/config
arquivo: cloud.google.com/compute/docs/gcloud-compute, mas não acho que a AWS tenha o mesmo suporte-v
.A última vez que tentei isso, o scp não foi capaz de fazer isso. Sua linha de comando parece bem. Esta solução alternativa funcionará:
fonte
No meu caso, eu estava fazendo uma cópia remota para remota, sem o
-3
argumento. A porta fornecida com o parâmetro '-P' funciona com o 1º servidor, mas a porta 22 é usada com o 2º servidor.A solução é editar o
/etc/ssh/ssh_config
arquivoserver1
e adicionar estas linhas:Dessa maneira, a porta 1234 é usada para os dois. Também poderia ser diferente.
Esta solução tem melhor rendimento do que as soluções anteriores, porque a comunicação é direta.
fonte
A origem e o destino podem ser especificados como um URI no formato scp: // [user @] host [: port] [/ path]
para que você possa executar:
fonte