TL;DR
我rsync
將一些目錄從一台遠端伺服器/home/ubuntu
(設定為)複製到我的新 AWS EC2 執行個體。777
我現在ssh
因錯誤而無法進入它Permission denied (publickey)
。
我正在將生產環境從 SoftLayer 遷移到 AWS。
我必須將rsync
幾個目錄轉移到 EC2 (EBS),在此過程中,我確實將一些目錄從舊執行個體轉移/home/ubuntu/
到目前 EC2 執行個體的/home/ubuntu/
.
我的rsync
命令(在目的地)看起來像這樣。
ubuntu@[aws.remote.ec2]:~$ sudo rsync --include 'dir1' --include '*.sh' --include '.py' --include 'api_logs' --include 'database_backups' --exclude '*' -avz -e "ssh -p $portNumber" ubuntu@[softlayer.remote]:/home/ubuntu/ /home/ubuntu/
文件已成功傳輸。當我ssh
下次嘗試進入我的 EC2 時,我收到了Permission denied (publickey)
帶有以下選項的日誌ssh -v
:(我在下面的日誌中使用 {} 屏蔽了 IP 等私人資訊)
OpenSSH_7.2p2 Ubuntu-4ubuntu2.2, OpenSSL 1.0.2g 1 Mar 2016
debug1: Reading configuration data /home/{localuser}/.ssh/config
debug1: /home/{localuser}/.ssh/config line 1: Applying options for aws-fr-
ec2
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to {aws.ec2.ip} [{aws.ec2.ip}] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/{localuser}/Documents/AWS-Files/EC2-FR.pem type
-1
debug1: key_load_public: No such file or directory
debug1: identity file /home/{localuser}/Documents/AWS-Files/EC2-FR.pem-cert
type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2
Ubuntu-4ubuntu2.2
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.2 pat OpenSSH* compat
0x04000000
debug1: Authenticating to {aws.ec2.ip}:22 as 'ubuntu'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC:
<implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC:
<implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256
SHA256:g3nWVGmjJYVrNrwsDJMhzbLSw0FzBOLoUx80seD9qIs
debug1: Host '{aws.ec2.ip}' is known and matches the ECDSA host key.
debug1: Found key in /home/{localhost}/.ssh/known_hosts:11
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/{localhost}/Documents/AWS-Files/EC2-
FR.pem
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
我確實偶然發現這問題但沒有幫助。我還發現這AWS 論壇上的主題。
我確實按照列出的步驟操作:
發布者:mary@AWS:
您能否驗證此實例上 /home/ubuntu/.ssh 目錄及其中包含的檔案的權限?
若要驗證權限,您可以停止實例並分離根磁碟區(記下其所連接的裝置)。然後將該磁碟區附加到可用裝置上的另一個執行個體。如果需要,請建立一個安裝點,例如 /fixroot,並將裝置安裝到該安裝點。安裝後,cd 到 /fixroot/home/ec2-user 並檢查目錄和檔案權限。 .ssh 目錄應允許使用者(所有者)進行 rwx,且檔案應只能由使用者讀取。
當您在那裡時要檢查的另一件事是known_hosts 檔案沒有您嘗試連接的用戶端的重複條目。
完成此操作後,您可以卸載磁碟區並將其與實例分開。然後將其連接回您在第一步中記下的設備的原始實例並啟動該實例。
也
發布者:yromanenko:
事實證明,這是對 home/ubuntu 資料夾而不是 ssh 的放寬權限。我能夠透過分離根卷並修復權限來修復它。以下影片對指導我完成這些步驟非常有幫助:
http://d2930476l2fsmh.cloudfront.net/LostKeypairRecoveryOfLinuxInstance.mp4
我產生了一個新t2.micro
實例,並按照Mary
的步驟確認目錄上要yromanenko
設定的權限和解析度。755
/home/ubuntu
我將有問題的 EBS 設備重新連接回第一個 EC2 as,/dev/sda1
並嘗試失敗並出現相同的Permission denied (publickey)
錯誤!
因此,現在我在輔助實例上遇到了相同的錯誤t2.micro
。 :(
任何幫助,將不勝感激!
答案1
我有這個確切的問題。我使用的是 Amazon EC2 執行個體,因此我可以啟動另一個執行個體並找出差異。損壞的機器的/home/user 權限為777,未損壞的機器為700。 home/user 為700出於安全原因。這也解釋了為什麼它的海龜一路下來,再次rsync,它又壞了。
如果您夠幸運能夠以其他方式存取目錄,
chmod 700 /home/user
修復它。
以後rsync到/home/user的子目錄。