あるコンピュータから別のコンピュータにファイルをSCP転送しようとしているのですが、
チャネル 0 で実行要求が失敗しました。
ただし、SSH を使用すると、問題なくマシンにアクセスできます。役に立つかどうかはわかりませんが、Cygwin の SCP 機能を使用しています。
オンラインで検索したときに「.bashrc」ファイルについて言及されていましたが、見つかったのは「bash.bashrc」だけでした。
私が使用したコマンドは次のとおりです:
scp /filelocation/file user@hostname:/folderlocation
ホスト名の代わりに IP アドレスでも試してみましたが、結果は同じでした。
リモートサイトに SCP コマンドがあることを確認しました。
答え1
これは、Synology NAS にファイルを送信しようとしたときに発生しました。
ランニングはscp -O
効果がありました。
この-O
オプションは、ファイル転送に SFTP プロトコルではなく、従来の SCP プロトコルを使用します。
答え2
.bashrcファイル(およびドットで始まる他のファイル)を表示するには、次のようにします。
ls -a
簡単な回避策は、.profile、.bashrc、.login、.bash_profile ファイルの名前を変更して、含まれないようにすることです。これらは、シェル起動ファイルと呼ばれます。
scp が動作するようになった場合、答えはそれらのファイルの 1 つにあります。
基本的に、シェルの起動ファイルの 1 つが出力を送り返し、進行中の SSL ネゴシエーションが混乱します。
ウィンドウのタイトルを設定するために特別なエスケープ シーケンスを送信するだけの簡単な作業である可能性があります。もう 1 つの原因は stty コマンドです。
ログインした時のみターミナルに出力を囲むようにしたい
if tty -s >/dev/null 2>&1; then
# here if have a real terminal associated to send stty commands
# or other special escape sequences to terminal
fi
答え3
同意するストロボこのエラーは、多くの場合、.bashrc (およびその他の) bash 初期化ファイルからの出力によって発生します。
ただし、対話型シェルをテストするための bash 組み込みの方法がいくつかあります。高度な bash スクリプト ガイド参照、サーバー障害参照。
私が最もよく目にするのは、いつ出力を行うかについて $PS1 をテストすることです。
if [ "$PS1" ]; then
echo "some message"
fi
答え4
すべてのクライアント (またはクライアント アカウント) が ssh を使用してログイン スクリプトを操作することをサポートしているわけではないため、試して使用する有効な代替手段は scp ではなく sftp になります。