Ssh
rsync 作為 root 到 /var/www 失敗並出現“協議版本不匹配”
我正在嘗試設置一種命令方式,將網站程式碼從開發機器移動到我的 Ubuntu EC2 實例中,並將其直接複製到 /var/www/mywebsite 文件夾中,nginx 期望在該文件夾中找到該框中的網站.
這些 Ubuntu AMI 帶有一個預設的 ubuntu 使用者。我可以毫無問題地將文件夾從開發機器同步到 EC2 實例的 /home/ubuntu/ 文件夾:
rsync -avL --progress -e "ssh -i /home/me/myhosts.pem" source-folder ubuntu@ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com:~/code
但是當我嘗試以 root 身份將同一個文件夾同步到 /var/www 時:
rsync -avL --progress -e "ssh -i /home/me/myhosts.pem" source-folder root@ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com:/var/www/
我收到以下錯誤:
protocol version mismatch -- is your shell clean? (see the rsync man page for an explanation) rsync error: protocol incompatibility (code 2) at compat.c(174) [sender=3.0.9]
我不太清楚為什麼會這樣。我注意到當我收到以下消息時,我無法以 root 身份登錄:
Please login as the user "ubuntu" rather than the user "root". Connection to ec2[...] closed.
這可能解釋了上述行為。sshd_config 確實有“PermitRootLogin”,是的,但我想這在其他地方被阻止了。
我想一種選擇是更改 /var/www 文件夾的權限(現在它是 755 root root)並允許 ubuntu 在那裡複製文件,而不必每次都提升到 root。但是,我不確定這在安全方面是否是一個好主意,以及這是否是正確的解決方案,所以我很感激建議。
謝謝!
您還可以在遠端電腦上使用 sudo 啟動 rsync 以使用 root 權限執行它。您可以使用的選項是
--rsync-path
:rsync -avL --progress -e "ssh -i /home/me/myhosts.pem" --rsync-path="sudo rsync" source-folder ubuntu@ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com:/var/www/