ssh 経由の scp 使用時のエラー メッセージ

ssh 経由の scp 使用時のエラー メッセージ

何が起こっているのかよく分かりませんが、最近、リモート サーバーからローカルにファイルをコピーできないようです。ローカルから rsync を試したところ、次のエラー メッセージが表示されました。

 mut@mylocalcomputer:~$ rsync -chavzP --stats [email protected]:/home/users/mut/thedirectoryIneed /User/mut/
 [email protected]'s  password: 
 protocol version mismatch -- is your shell clean?
 (see the rsync man page for an explanation)
 rsync error: protocol incompatibility (code 2) at /SourceCache/rsync/rsync-42/rsync  /compat.c(61) [receiver=2.6.9] 

そこで、rsync を実行し、指示に従って次の操作を行って問題を診断しました (ローカル コマンド ラインに入力)。

ssh [email protected] /bin/true > out.dat

パスワードを入力しても何も返されず、新しいプロンプトが表示されるだけです。

(2) そこで代わりに試してみたところ、ローカルから実行するscpたびに、ファイルタイプ、サイズ、権限、ファイル名を表示する次の出力が表示されますが、それ以外は何も表示されませんでした。scpssh

 C0644 183 fileineedfromremoteserver.cpp

しかし、ファイルはコピーされません (少なくとも、コンピューター上のどこにも見つかりません)。

何が問題なのか、他に何を試すことができるのか、何かアドバイスはありますか?

注: 私のローカルは OSX(BSD) のデフォルトのターミナル CLI で、サーバーは GNU Linux です。サーバーからファイルをコピーする前は問題がありませんでした。それ以降に変わったこととして考えられるのは、ある時点でローカルから SSH キーを生成するコマンドを入力したことです (毎回パスワードを入力しなくてもサーバーにログインできるように自動化しようとして失敗しました)。ただし、これが原因であるとは思えません。

答え1

このエラーを見たのは随分前のことですが、私が見たときは、ログイン時にテキストを出力する間違ったシェル rc ファイル内に何かがあったためだったと記憶しています。

問題のファイルは使用しているシェルに固有のものですが、bash の場合は次のように修正できます。

リモートシステム(mambo.m66.com)のアカウントにログインしている状態で、以下を実行します . .bashrc(最初のピリオドはタイプミスではありません)。どれでもそのコマンドを実行したときの出力を変更するには、.bashrc ファイル内のコマンドを .bash_profile に移動する必要があります。

abydos:~ jonv$ touch sourcefile
abydos:~ jonv$ echo 'echo This should work.' > .bash_profile
abydos:~ jonv$ rsync jonv@localhost:sourcefile destfile
abydos:~ jonv$ echo 'echo This should NOT work.' > .bashrc
abydos:~ jonv$ rsync jonv@localhost:sourcefile destfile
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at /SourceCache/rsync/rsync-42/rsync/compat.c(61) [receiver=2.6.9]

さらに詳しく知りたい場合は、ネット上にたくさんのリソースがあります。「.bashrc vs .bash_profile」を検索すると、たくさんの情報が見つかります。

関連情報