透過 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,每次我從本地scp過來時ssh,我都會得到以下輸出,顯示檔案類型、大小、權限和檔案名,但沒有其他內容:

 C0644 183 fileineedfromremoteserver.cpp

但該文件不會複製(或至少我在電腦上的任何地方都找不到它)。

關於問題可能是什麼的任何建議,或者我還可以嘗試什麼?

注意:我的本地是 OSX(BSD) 上的預設終端 CLI,伺服器是 GNU linux。在從伺服器複製檔案之前我從未遇到任何問題,而且我能想到的唯一改變是,在某個時候我輸入了從本地生成 SSH 金鑰的命令(在嘗試自動化的失敗嘗試中)我登錄伺服器而無需每次都輸入密碼)。我懷疑這與它有什麼關係。

答案1

我已經很久沒有看到這個錯誤了,但是 IIRC 當我看到它時,這是由於登入時輸出文字的 shell rc 檔案中有一些錯誤的內容。

有問題的檔案特定於您正在使用的 shell,但以下是針對 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”並獲得大量內容。

相關內容