web-dev-qa-db-ja.com

`$ PATH`に` scp`がありますが、 `bash:scp:コマンドが見つかりません`

これが私の画面出力です:

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$

参照: 注釈付きスクリーンショット

画面のコピーに示されているように、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
[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$

参照: スクリーンショット

アップデートIII

回答の1つで要求されているように、リモートサーバーとローカルシステムでのwhich scpコマンドの結果は次のとおりです。

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$

参照: 注釈付きスクリーンショット

マーティンのIVを更新

@マーティン、これがあなたの指示に従った結果です

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

参照: スクリーンショット

3
Gelin Luo

インタラクティブセッションの場合のみ、リモートPATHscpを指すように設定されている可能性があります。

scpは非対話型セッションを使用します。

確認するには、ssh -T -i ...でログインしてから、scpを実行してみてください。

同じエラーが発生するはずです。


対話型セッションと非対話型セッション用に、異なるスタートアップスクリプトのセットが提供されている可能性があります。および/またはTERM環境変数(または同様のもの)の有無に基づいて、スクリプト内のさまざまな分岐が取得されます。

どちらの状況でもPATHを正しく設定するには、起動スクリプトを修正する必要があります。

1
Martin Prikryl

私はzshで同様の問題を抱えていました:

zsh:1: command not found: scp

私の場合の問題の理由は何ですか$PATHは非対話型セッションでは設定されませんでした(これはscpの場合です)。

私の解決策は:

ln -s zprofile /etc/zsh/zshenv

おそらく、bashを使用したソリューションは非常に似ています。

0
kralyk

リモートマシンで~/.bashrcファイルを確認します。おそらくその中のPATHを変更します。

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

または同様のもの。この行にコメントします。これで、scpは正常に機能するはずです。

編集:

これはscphttps://bugzilla.redhat.com/show_bug.cgi?id=20527 のバグです。

~/.bashrcで壊れたコードを見つけた場合:

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

ホストマシンの1つだけにscpがあり、もう1つにはないようです。

スクリーンショットから、scpがホストマシン「ubuntu @ ip-172-31-25-135」に存在することがわかりますが、存在します。ホストマシン「luog @ luog-satellite-P50-A」ホストには存在しません。

SCPが正しく機能するには、[〜#〜]両方[〜#〜]マシンに存在する必要があります。

Sudo apt-get install openssh-clientを使用して、「luog @ luog-satellite-P50-A」ホストマシンにインストールします。その後は正常に動作するはずです。

よろしく、マイク

0
Lawless Leopard