与
aws ssm get-parameters-by-path --path /aws/service/debian/release/bookworm/ --recursive
我能够列出所有官方 Debian 12 AMI,我只对 amd64 AMI 感兴趣。
我的 VPC 和子网已将 enableDnsSupport 设置为 true。
我的所有测试都是在同一个VPC、同一个子网和同一个安全组中进行的。 唯一发生变化的是 AMI(全部来自官方 Debian 帐户)。 我没有在 EC2 实例中进行任何配置。然后我就开始尝试运行 sudo 命令(例如:sudo ls)
使用以下 AMI:ami-087da76081e7685da、ami-058a645884552df66 和 ami-07254a4b88b1dc88d 我可以使用 sudo,没有任何问题
$ sudo ls => my current folder is empty
$ hostname -f
ip-10-0-3-203
如果我运行 sudo apt update && sudo apt full-upgrade -y,一切看起来都很棒,并且我使用 sudo ls 和主机名 -f 得到相同的结果
使用最新的 AMI (ami-04d8e65bd49d048bd),当我运行任何 sudo 命令(例如:sudo ls)时,我收到以下错误
$ sudo ls
sudo: unable to resolve host ip-10-0-3-101: Name or service not known
$ hostname -f
hostname: Name or service not known
所有 ami 上的 cat /etc/hosts 都有相同的模式
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
cat /etc/hostname 也一样
ip-10-0-3-203
如何修复使用最新 Debian 12 ami (ami-04d8e65bd49d048bd) 的实例上的问题?
为了测试您的情况,我做了以下操作:
eu-west-3
(巴黎)地区ami-04d8e65bd49d048bd
Debian 12 (20240415-1718) 启动了一个实例sudo -i
我收到了类似的回复:
admin@ip-172-31-39-60:~$ sudo -i
sudo: unable to resolve host ip-172-31-39-60: Name or service not known
对
ip-172-31-39-60
的引用很重要,因为 EC2 实例被分配了私有 IP 地址 172.31.39.60
和 DNS 名称 ip-172-31-39-60.eu-west-3.compute.internal
。
这表明该实例正在尝试解析部分域名,但默认域名不是
eu-west-3.compute.internal
。
然后我添加了一个条目到
/etc/hosts
:
echo "172.31.39.60 ip-172-31-39-60" >>/etc/hosts
然后允许
sudo -i
工作:
root@ip-172-31-39-60:~# sudo -i
root@ip-172-31-39-60:~# whoami
root
root@ip-172-31-39-60:~# sudo -l -U admin
Matching Defaults entries for admin on ip-172-31-39-60:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin,
use_pty
User admin may run the following commands on ip-172-31-39-60:
(ALL : ALL) ALL
(ALL) NOPASSWD: ALL
总结
我不确定是什么导致了问题,但向
/etc/hosts
添加条目是解决该问题的一个简单方法。