'bash: scp: comando não encontrado' enquanto eu tenho 'scp' em '$ PATH'

4

Aqui está a saída da minha tela:

loug@loug-Satellite-P50-A:~/Downloads$ scp -i ~/--------- browser-uat.zip ubuntu@yabuat:
bash: scp: command not found
lost connection
loug@loug-Satellite-P50-A:~/Downloads$
loug@loug-Satellite-P50-A:~/Downloads$ ssh -i ~/--------- ubuntu@yabuat
[email protected]:~$
[email protected]:~$ scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2
[email protected]:~$
[email protected]:~$ echo $PATH
/opt/sonar/runner/bin:/snap/bin:/bin:/usr/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8
-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/usr/bin
[email protected]:~$
[email protected]:~$ echo $SHELL
/bin/bash
[email protected]:~$
[email protected]:~$ sudo apt install openssh-client
Reading package lists... Done
Building dependency tree
Reading state information... Done
openssh-client is already the newest version (1:7.2p2-4ubuntu2.1).
o upgraded, 0 newly installed, 0 to remove and 108 not upgraded.
[email protected]:~$ exit
logout
Connection to yabuat closed.
loug@loug-Satellite-P50-A:~/Downloads$

Veja: Captura de tela anotada

Como mostrado na cópia da tela, o comando scp falhou com

bash: scp: command not found
lost connection

No entanto, depois de eu ssh no servidor remoto e digitar scp , posso ver que o comando está disponível e meu $PATH environment é bom.

Quando tentei instalar openssh-client , como sugerido em muitos lugares, recebi openssh-client is already the newest version

Agora estou preso e não sei o que há de errado com o comando scp .

Atualizar

Eu tenho openssh-client instalado localmente, nada de errado com o ambiente local:

loug@loug-Satellite-P50-A:~/Downloads$ scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2
loug@loug-Satellite-P50-A:~/Downloads$ echo $PATH
/opt/play:/opt/idea/bin:/opt/maven/bin:/home/loug/bin_local:/home/loug/bin:/home/loug/.nvm/versi
ons/node/v7.7.4/bin:/usr/local/share/resin/bin:/home/loug/bin:/usr/local/sbin:/usr/local/bin:/us
r/sbin:/usr/bin:/usr/local/go/bin:/sbin:/bin:/usr/games:/usr/local/games
loug@loug-Satellite-P50-A:~/Downloads$

Veja: Captura de tela anotada

Atualizações II

Uma cópia de tela mostra que o comando scp está disponível nas duas extremidades:

loug@loug-Satellite-P50-A:~/Downloads$ echo 'show we have local scp installed'
show we have local scp installed
loug@loug-Satellite-P50-A:~/Downloads$ scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2
loug@loug-Satellite-P50-A:~/Downloads$ echo 'show teh error in scp files to remote'
show the error in scp files to remote
loug@loug-Satellite-P50-A:~/Downloads$ scp -i ~/.keys/yab-ci.pem browser-uat.zip ubuntu@yabuat:
bash: spc: command not found
lost connection
loug@loug-Satellite-P50-A:~/Downloads$ echo 'ssh into remote and test scp on remote'
ssh into remote and test scp on remote
loug@loug-Satellite-P50-A:~/Downloads$ ssh -i ~/.keys/yab-ci.pem ubuntu@yabuat
[email protected]:~$ scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2
[email protected]:~$ exit
logout
Connection to yabuat closed.
loug@loug-Satellite-P50-A:~/Downloads$ echo 'so we proved the scp command available on both end'

so we proved the scp command available on both end
loug@loug-Satellite-P50-A:~/Downloads$

Veja: Captura de tela

Atualização III

Conforme exigido por uma das respostas, aqui está o resultado dos comandos which scp no servidor remoto e no sistema local:

loug@loug-Satellite-P50-A:~/Downloads$ ssh -i ~/.keys/yab-ci.pem ubuntu@yabuat
[email protected]:~$ which scp
/usr/bin/scp
[email protected]:~$ exit
logout
Connection to yabuat closed.
loug@loug-Satellite-P50-A:~/Downloads$ ssh -T -i ~/.keys/yab-ci.pem ubuntu@yabuat
^Cloug@loug-Satellite-P50-A:~/Downloads$ which scp
/usr/bin/scp
loug@loug-Satellite-P50-A:~/Downloads$

Veja: Captura de tela anotada

Atualizações IV para Martin

@Martin, aqui está o resultado após sua instrução

loug@loug-Satellite-P50-A:~/Downloads$ ssh -T -i ~/.keys/yab-ci.pem ubuntu@yabuat
loug@loug-Satellite-P50-A:~/Downloads$ which scp
/usr/bin/scp
scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

Veja: Captura de tela

    
por Gelin Luo 11.05.2017 / 04:22

4 respostas

1

É bem provável que você tenha seu controle remoto PATH definido para apontar para scp apenas para sessões interativas.

O scp usa sessão não interativa.

Para verificar, tente fazer o login com ssh -T -i ... e tente executar scp .

Você deve receber o mesmo erro.

Um conjunto diferente de scripts de inicialização é (pode ser) originado para sessões interativas e não interativas. E / ou diferentes ramificações nos scripts são tomadas, com base na ausência / presença da variável de ambiente TERM (ou similar).

Você provavelmente precisará corrigir seus scripts de inicialização para definir o PATH corretamente em qualquer situação.

    
por 11.05.2017 / 08:07
0

Parece que você tem scp em apenas uma de suas máquinas host, mas não na outra.

Da sua captura de tela, podemos ver que scp existe na máquina host "ubuntu @ ip-172-31-25-135", mas ela não existe na máquina host "luog @ luog-satellite-P50-A "host.

O SCP deve existir em máquinas BOTH para funcionar corretamente.

Instale-o na máquina host "luog @ luog-satellite-P50-A" usando sudo apt-get install openssh-client . Deve funcionar bem depois disso.

Atenciosamente, Mike

    
por 11.05.2017 / 04:48
0

Veja o arquivo ~/.bashrc na máquina remota. Você provavelmente modifica PATH :

export PATH="$PATH;~/bin/"

ou algo similar. Comente esta linha. Agora scp deve funcionar bem.

EDITAR:

Este é um bug no scp link

Se você encontrar um código quebrado em ~/.bashrc :

if [ "$SSH_TTY" ]
then
    # broken code
fi
    
por 11.05.2017 / 14:11
0

Eu tive um problema semelhante com o zsh:

zsh:1: command not found: scp

O motivo para o problema no meu caso é que $PATH não foi definido em sessões não interativas (que é o caso de scp ).

Minha solução foi:

ln -s zprofile /etc/zsh/zshenv

Presumivelmente, a solução com bash será muito semelhante.

    
por 02.03.2018 / 11:13