AWS - 在 rsync'ing /home/ubuntu 目錄後被鎖在 EC2 之外

AWS - 在 rsync'ing /home/ubuntu 目錄後被鎖在 EC2 之外

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的子目錄。

相關內容