`bash: scp: команда не найдена`, в то время как у меня есть`scp` в `$PATH`

Вот мой вывод на экран:

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
ubuntu@ip-172.31.25.135:~$
ubuntu@ip-172.31.25.135:~$ 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
ubuntu@ip-172.31.25.135:~$
ubuntu@ip-172.31.25.135:~$ 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
ubuntu@ip-172.31.25.135:~$
ubuntu@ip-172.31.25.135:~$ echo $SHELL
/bin/bash
ubuntu@ip-172.31.25.135:~$
ubuntu@ip-172.31.25.135:~$ 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.
ubuntu@ip-172.31.25.135:~$ exit
logout
Connection to yabuat closed.
loug@loug-Satellite-P50-A:~/Downloads$

Смотрите: Аннотированный снимок экрана

Как показано на экране копии, scp команда не выполнена с

bash: scp: command not found
lost connection

Однако после того, как я ssh в удаленный сервер и введите scp Я вижу, что команда доступна, и мой $PATH среда это хорошо.

Когда я пытался установить openssh-client, как подсказывают во многих местах, я получаю openssh-client is already the newest version

Теперь я застрял и не знаю, что не так с scp команда.

Обновить

я имею openssh-client устанавливается локально, ничего плохого в локальной среде:

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$

Смотрите: Аннотированный снимок экрана

Обновления II

Экранная копия показывает, что scp Команда доступна на обоих концах:

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
ubuntu@ip-172.31.25.135:~$ 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
ubuntu@ip-172.31.25.135:~$ 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$

Смотрите: Снимок экрана

Обновление III

В соответствии с одним из ответов, вот результат which scp Команды на удаленном сервере и локальной системе:

loug@loug-Satellite-P50-A:~/Downloads$ ssh -i ~/.keys/yab-ci.pem ubuntu@yabuat
ubuntu@ip-172.31.25.135:~$ which scp
/usr/bin/scp
ubuntu@ip-172.31.25.135:~$ 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$

Смотрите: Аннотированный снимок экрана

Обновления IV для Мартина

@Martin, вот результат, следуя вашей инструкции

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

Смотрите: Снимок экрана

5 ответов

Вполне вероятно, что у вас есть пульт PATH установить, чтобы указать scp только для интерактивных сессий.

scp использует неинтерактивный сеанс.

Для проверки попробуйте войти с ssh -T -i ... а затем попробуйте запустить scp,

Вы должны получить ту же ошибку.


Другой набор сценариев запуска (может быть) получен для интерактивных и неинтерактивных сеансов. И / или разные ветки в скриптах берутся, исходя из отсутствия / присутствия TERM переменная окружения (или аналогичная).

Вы, вероятно, должны исправить ваши сценарии запуска, чтобы установить PATH правильно в любой ситуации.

Посмотри на свой ~/.bashrc файл на удаленной машине. Вы, вероятно, измените PATH в этом:

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

или что-то подобное. Прокомментируйте эту строку. Сейчас scp должно работать нормально.

РЕДАКТИРОВАТЬ:

Это ошибка в scp https://bugzilla.redhat.com/show_bug.cgi?id=20527

Если вы найдете неработающий код в ~/.bashrc:

if [ "$SSH_TTY" ]
then
    # broken code
fi

У меня была похожая проблема с Zsh:

zsh:1: command not found: scp

Причина проблемы в моем случае какая то $PATH не был установлен в неинтерактивных сеансах (что имеет место для scp).

Мое решение было:

ln -s zprofile /etc/zsh/zshenv

Предположительно решение с bash будет очень похоже.

Кажется, что у вас есть scp только на одной из ваших хост-машин, но не на другой.

Из вашего снимка экрана видно, что scp существует на хост-компьютере "ubuntu@ip-172-31-25-135", но не существует на хосте "luog@luog-satellite-P50-A",

SCP должен существовать на ОБОИХ машинах для правильной работы.

Установите его на хост-компьютере "luog@luog-satellite-P50-A", используя sudo apt-get install openssh-client, После этого все должно работать нормально.

С уважением, Майк

Возможно, это глупо, но есть ли в вашем скрипте переменная с именем PATH?

Со мной случилось так, что я использую имя переменной PATH, которое перезаписывает фактическую $PATH. Измените имя этой переменной, и все будет в порядке.

Другие вопросы по тегам