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

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

Увидеть: Скриншот

Gelin Luo
источник
2
если это действительно необходимо, вы должны скопируйте текст из вывода консоли и вставьте сюда вместо публикации в качестве изображения
phuclv
Размещение в виде изображения - это способ показать и доказать контекст. Там нет скриптов необходимо копировать / вставлять в процессе
Gelin Luo
Я не вижу здесь ничего, что нельзя описать в тексте. Если есть, оставьте комментарий в коде.
phuclv

Ответы:

1

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

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

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

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


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

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

Martin Prikryl
источник
Я пытался бежать ssh -T -i ... Вы, вероятно, можете заметить, что на экране копия обновления III вопроса. Однако, похоже, что я просто завис там и мне нужно нажать Ctrl-C, чтобы прервать процесс.
Gelin Luo
Это, вероятно, ждет команды. Просто введите which scp,
Martin Prikryl
Увидеть обновления iv
Gelin Luo
Хорошо, как насчет ssh -T -i ~/***.pem ubuntu@yabuat scp или же ssh ... which scp?
Martin Prikryl
они все дают мне bash: scp|which command not found
Gelin Luo
0

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

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

SCP должен существовать на И ТО И ДРУГОЕ машины работают правильно.

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

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

Lawless Leopard
источник
Нет, это не правильный ответ. Пожалуйста, смотрите обновления
Gelin Luo
@green Не могли бы вы предоставить результат команды which scp , Это должно сказать нам, по какому пути точно установлены двоичные файлы scp.
Lawless Leopard
Увидеть обновления III
Gelin Luo
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
Tomasz Jakub Rup
источник
Это не ошибка scp, Это неверная конфигурация.
Martin Prikryl
0

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

zsh:1: command not found: scp

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

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

ln -s zprofile /etc/zsh/zshenv

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

kralyk
источник