4

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

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

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

4 ответа4

1

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

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

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

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


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

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

0

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

zsh:1: command not found: scp

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

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

ln -s zprofile /etc/zsh/zshenv

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

0

Посмотрите на файл ~/.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
0

Кажется, что у вас есть 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 . После этого все должно работать нормально.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .