scp 到 AWS EC2 - 錯誤 - “請以使用者“ubuntu”而不是使用者“root”身份登錄。”
我正在嘗試將文件 scp 到 /var/www,因為我正在使用 apache。要移動文件,我會這樣做
scp -i <ec2-shh-key> localfile root@<ec2-instance-ip>:/var/www/fileremote
。但這給了我一個錯誤:
Please login as the user "ubuntu" rather than the user "root".
我怎麼解決這個問題?
編輯:我發現了這個超級使用者問題,它通過首先將文件 scp’ing 到非 sudo 目錄來回答問題,然後通過 ssh 傳遞 sudo mv 命令來移動文件。有沒有辦法只用 scp 一步完成?
如果您收到您列出的錯誤,那麼您沒有在 scp 命令中指定“ubuntu@”,或者您已將 /root/.ssh/authorized_keys 文件複製到 /home/ubuntu/.ssh/authorized_keys (這會很糟糕因為您無法使用 ssh 登錄)。
確實,一旦您開始指定“ubuntu@”,您將收到權限錯誤,但您可以使用如下命令解決此問題:
rsync -vazSHAX --rsync-path "sudo rsync" LOCALILE ubuntu@HOST:/var/www/REMOTEFILE
這裡的關鍵是 –rsync-path 選項。
rsync 命令甚至可以讓您複製整個目錄樹,如下所示:
rsync -vazSHAX --rsync-path "sudo rsync" LOCALDIR/ ubuntu@HOST:REMOTEDIR/
如果您使用 EC2 生成的密鑰對啟動實例,那麼您可能還需要在 rsync 中指定此選項,指向下載的 ssh 密鑰的本地副本:
--rsh "ssh -i KEYPAIR.pem"
這是我寫的一篇關於如何在 Ubuntu EC2 實例上使用 sudo、ssh、rsync 的文章:
在 EC2 的官方 Ubuntu 映像上使用 sudo、ssh、rsync
這是一篇文章,我解釋瞭如何將您的預設個人 ssh 密鑰上傳到 EC2,以便 ssh 和 rsync 不需要額外的身份選項:
將個人 ssh 密鑰上傳到 Amazon EC2