You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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时,系统不需要解析,直接连到正确的目标主机,所以能成功执行。

解决步骤:

  1. 编辑正确的配置文件:
    执行命令打开/etc/hosts:

    sudo nano /etc/hosts
    

    在文件末尾添加一行:

    192.168.1.1 node2
    

    保存并退出(nano里按Ctrl+O保存,Ctrl+X退出)。

  2. 验证映射是否生效:
    执行ping node2,如果终端显示的目标IP是192.168.1.1,说明映射已经生效了。

  3. 再次尝试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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:23:06