O comando SCP de rotina falha (VPN/rede ativa)

O comando SCP de rotina falha (VPN/rede ativa)

Minha máquina de desenvolvimento roda no Fedora (36).

Recentemente, tentei enviar um arquivo para um servidor remoto (CentOS 7) e recebi uma mensagem de erro enigmática:

scp: dest open(""): Arquivo ou diretório inexistente

O comando se parece com:

scp -C foo.ext user@internal-vpn-ip:~/

Nada fora do comum, fiz isso muitas vezes ao longo dos anos sem problemas. Estranho, pensei, tudo está funcionando, mas o scp não consegue encontrar o caminho remoto. Experimentando um pouco, expandi o caminho do usuário remoto:

scp -C foo.ext user@remote-ip:/path/to/user/

e pronto, funcionou!

A questão é: por que~a expansão do caminho não funciona mais?

Responder1

Parece que no RedHat 9+ SCP agora usa SFTP nos bastidores.

NoDescontinuação do OpenSSH SCPpágina há uma lista de incompatibilidades e advertências relacionadas aos sistemas pré-RedHat 9 e RedHat 9+, incluindo este trecho relevante.

Outra diferença entre os protocolos está na expansão do processamento de caminho baseado em ~. OpenSSH 8.7 e versões posteriores suportam uma extensão SFTP especial para lidar com esta expansão. Infelizmente, esta extensão não é suportada em versões anteriores, portanto, copiar pastas de uma nova versão do RHEL para uma antiga irá falhar se o processamento ~ path for usado. Nesses casos, a solução recomendada é fornecer caminhos absolutos.

Isso explica a necessidade de expandir manualmente o caminho. Irritante, mas pelo menos agora sabemos o porquê :)

informação relacionada