文章目錄
- 前言📖
- 一、報錯先知?
- 二、問題復現😯
- 三、解決辦法🎲
- 四、驗證結果👍
- 五、參考鏈接🔗
前言📖
這篇文章將講述我在 Amazon EC2 上使用 RHEL9 AMI 時無法連接到 EC2 實例時所遇到的麻煩😖
一、報錯先知?
Failed to connect to your instance
Error establishing SSH connection to your instance. Try again later.
二、問題復現😯
1?? 首先,創建了所需要的 VPC、子網、路由表、互聯網網關、安全組等網絡參數配置信息;
2?? 接著,啟動新的EC2實例,選擇的操作系統是RHEL-9.5.0_HVM-20250313-x86_64-0-Hourly2-GP3
,選擇之前配置好的VPC網絡環境配置,以及創建出新的訪問密鑰、設置存儲空間大小。
3?? 最后,啟動配置好的EC2實例。想要通過EC2 Instance Connect 的方式連接到實例,但是產生上述報錯信息,導致無法通過EC2 Instance Connect 的方式連接到實例。
最終,在確認好EC2實例及網絡配置正確的情況下,嘗試在本地使用SSH的方式進行訪問EC2實例。
在輸入ssh -i <密鑰> ec2-user@<公網IP地址>
回車后,成功連接到EC2實例。
至此,所有的配置均無問題,SSH能夠正常訪問到EC2實例。但為何無法通過EC2 Instance Connect 的方式連接到實例呢?
也重新啟動了實例,再次嘗試通過EC2 Instance Connect 連接到實例,依然還是發生報錯,連接不上。
帶著這個疑問以及產生出來的報錯信息,在查閱相關文檔后,最后找到了原因所在,并成功解決這一問題。
三、解決辦法🎲
要使用 EC2 Instance Connect 連接到 Linux 實例,該實例必須安裝 EC2 Instance Connect。安裝 EC2 Instance Connect 將在實例上配置 SSH 進程守護程序。
以使用 Red Hat Enterprise Linux(RHEL)啟動的實例上安裝 EC2 Instance Connect為例進行安裝演示。
- 使用 SSH 連接到實例
ssh -i <密鑰.pem> ec2-user@<公網IP地址>
- 運行以下命令,在實例上安裝 EC2 Instance Connect 軟件包【RHEL 9 Intel/AMD(x86_64)】
mkdir /tmp/ec2-instance-connectcurl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpmcurl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpmsudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
在 /opt/aws/bin/ 文件夾中會看到以下新腳本:
eic_run_authorized_keys
- 驗證是否在實例上成功安裝了 EC2 Instance Connect (RHEL 9)
sudo more /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf
如果 AuthorizedKeysCommand 和 AuthorizedKeysCommandUser 行包含以下值,則成功安裝 EC2 Instance Connect:
AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
AuthorizedKeysCommandUser ec2-instance-connect
- AuthorizedKeysCommand 設置 eic_run_authorized_keys 文件以從實例元數據中查找密鑰
- AuthorizedKeysCommandUser 將系統用戶設置為 ec2-instance-connect
四、驗證結果👍
最后,嘗試使用EC2 Instance Connect 的方式連接到實例,發現連接成功??,如下圖所示👏。
五、參考鏈接🔗
👀 在您的 EC2 實例上安裝 EC2 Instance Connect
🥳 https://github.com/aws/aws-ec2-instance-connect-config