scp exec要求がチャネル0で失敗しました


11

コンピュータ間でファイルをSCPしようとしていますが、

実行要求はチャネル0で失敗しました。

しかし、SSHを使用すると、問題なくマシンにアクセスできます。それが役立つ場合、私はCygwinのSCP関数を使用しています。

オンラインで検索したところ、「。bashrc」ファイルについて話しましたが、見つかったのは「bash.bashrc」だけです。

これは私が使用したコマンドです:

scp /filelocation/file user@hostname:/folderlocation

ホスト名の代わりにIPアドレスも試してみましたが、同じ結果が得られました。

リモートサイトにSCPコマンドがあることを確認しました。

回答:


0

.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

0

このエラーは.bashrc(およびその他の)bash初期化ファイルからの出力が原因であることが多いというストロボライトに同意します。

ただし、対話型シェルをテストするためのbash組み込みの方法はいくつかあります。高度なbashスクリプトガイドのリファレンス、serverfaultリファレンスです。

私が最も頻繁に目にしたのは、出力を行うタイミングを$ PS1でテストすることです。

if [ "$PS1" ]; then
    echo "some message"
fi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.