Eu tenho dois nós remotos que estou tentando enviar arquivos de um para outro.
scp remote1:~/testSCP [email protected]:~/
Eu ~/ssh/config
configurei na minha máquina local, então, está usando a porta 2222
por padrão.
Mas a porta ssh padrão do remote1 está definida 22
na configuração ssh em vez de port 2222
. Então, para fazer qualquer conexão externa via ssh, ele usa a porta 22
por padrão.
Tentei o seguinte que não funcionou:
scp -P 2222 remote1:~/testSCP [email protected]:~/
Também tentei o seguinte, que também não funcionou:
scp remote1:~/testSCP -P 2222 [email protected]:~/
Para ambos, recebi o seguinte erro:
ssh: connect to host 10.0.1.10 port 22: Connection refused
lost connection
O que é verdade, pois 10.0.1.10
está usando port 2222
e não port 22
.
Como posso especificar remote1 para usar a porta 2222
ao tentar enviar arquivos para 10.0.1.10
(remote2) de remote1
?
Atualizar
Depois de tentar
scp -3 remote1:~/testSCP [email protected]:~/
Eu recebo um comportamento estranho. Mesmo que minha senha esteja correta, ela está me dando a seguinte saída:
[email protected]'s password: [email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Ainda não habilitei a autenticação sem chave.
Nova atualização
Depois de tentar de várias maneiras, consegui fazer isso em meus scripts fazendo login no remote1 via ssh do meu localhost e depois scp de remote1 para remote2. No entanto, isso não responde à minha pergunta. Eu pretendia fazer isso diretamente da minha máquina local e transferir arquivos entre duas instâncias, o que acho que não é suportado se os daemons ssh de duas instâncias estiverem usando uma porta diferente do padrão para conexão ssh.
Você não pode fazer isso com um simples scp remoto para remoto [1].
Em vez disso, execute ssh no 1º host remoto e execute scp com um argumento de porta de lá:
Se você deseja fazer exatamente o que
scp
está fazendo, também pode adicionar as-n -x -oClearAllForwardings=yes
opções assh
, embora isso geralmente não seja necessário.[1]: as versões mais recentes do
scp
suporte a uma especificação uri (incluindo uma porta) em vez dehost:path
, mas apenas ao usar a-3
opção ("passar pelo host local").Então você provavelmente poderia usar
(observe que o
/
após ohost[:port]
não faz parte do caminho --scp://user@host/file
fará referência ao./file
diretóriouser
inicial do ).Mas copiar pelo localhost é mais lento e, na minha experiência, ocultará erros. Por exemplo, isso não imprimirá nenhuma mensagem de erro, apesar de não poder criar nenhum
/foo/bar/baz
arquivo:Eu não cheguei a nenhuma profundidade nisso - apenas evitei ;-)
Se alguém não está convencido de tudo isso, pode olhar o código-fonte :
Observe que a
tport
variável é definida apenas analisando umscp://
uri e simplesmente não existe em versões anteriores a 7.6p1 (outubro de 2017).