Ubuntu 20.04环境下ssh-copy-id node2提示Permission denied但指定IP可成功的问题求助
Ubuntu 20.04环境下ssh-copy-id node2提示Permission denied但指定IP可成功的问题求助
嘿,我来帮你拆解这个问题!核心大概率是你配置错了文件——Ubuntu里用来设置IP和主机名映射的是/etc/hosts,而不是/etc/hostnames!
先搞清楚两个文件的区别:
/etc/hostnames:这个文件是用来定义当前系统自己的主机名的,和解析其他主机的名字完全没关系,你在这儿写IP和node2的映射,系统根本不会读取这个配置来解析node2。/etc/hosts:这才是系统用来做本地主机名解析的文件,只有把192.168.1.1 node2写在这里,系统才能把node2这个名字对应到目标IP上。
为什么会出现两种操作结果不同?
当你执行ssh-copy-id node2时,因为系统没从正确的配置文件里拿到映射,它会去尝试其他解析方式(比如查DNS服务器),结果大概率解析不到正确的192.168.1.1,要么连错了机器,要么解析失败,自然就返回Permission denied了。而直接用ssh-copy-id node2@192.168.1.1时,系统不需要解析,直接连到正确的目标主机,所以能成功执行。
解决步骤:
编辑正确的配置文件:
执行命令打开/etc/hosts:sudo nano /etc/hosts在文件末尾添加一行:
192.168.1.1 node2保存并退出(nano里按
Ctrl+O保存,Ctrl+X退出)。验证映射是否生效:
执行ping node2,如果终端显示的目标IP是192.168.1.1,说明映射已经生效了。再次尝试
ssh-copy-id node2,应该就能正常执行,不会再提示Permission denied了。
额外排查点(如果上面操作后还是有问题):
- 检查
/etc/hosts里的格式是否正确:每行必须是IP地址 主机名的格式,不要有多余的特殊符号或者错误的空格。 - 检查系统的解析优先级:可以用
nslookup node2或者dig node2看看node2的解析结果,确认是不是指向192.168.1.1,如果不是,可能是DNS缓存或者其他解析配置干扰,你可以执行sudo systemd-resolve --flush-caches清除本地DNS缓存再试。
备注:内容来源于stack exchange,提问作者Quý Phạm Đình
相关产品推荐
相关产品推荐

