SSH:如何处理缺失:/home/USER/.ssh/known_hosts

SSH:如何处理缺失:/home/USER/.ssh/known_hosts

我有一台旧笔记本电脑,我正在使用它来学习 Ubuntu Server 12.10。在重新格式化和安装 Ubuntu Server 之前,我使用的是 Ubuntu Desktop。

使用 Ubuntu Desktop,我使用 no-ip.com 托管域通过 ssh 访问机器(没有问题)。重新格式化后,我尝试使用相同的 no-ip.com 域访问同一台机器(家庭 LAN 上的相同静态 IP),但现在我收到以下错误:

   WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!    
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX: (Omitted).
Please contact your system administrator.
Add correct host key in /home/guest/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/guest/.ssh/known_hosts:2
  remove with: ssh-keygen -f "/home/guest/.ssh/known_hosts" -R username.no-ip.org
ECDSA host key for username.no-ip.org has changed and you have requested strict checking.
Host key verification failed.

诚然,我不太理解错误信息。经过一番谷歌搜索后,我选择运行以下命令:

$ ssh-keygen -R {username.no-ip.org}

这会出现以下错误:

ssh-keygen: /home/jerry/.ssh/known_hosts: No such file or directory

错误消息中所建议的“Guest”也不存在:

jerry@mediaserver:/home$ tree -a
.
└── jerry
    ├── .bash_history
    ├── .bash_logout
    ├── .bashrc
    ├── .cache
    │   └── motd.legal-displayed
    ├── .config
    │   └── htop
    │       └── htoprc
    └── .profile

这引出了以下问题:如果这个文件根本不存在,那么错误消息中指出的差异在哪里?也许我需要创建这个文件?

感谢所有愿意与我一起解决此问题的人!

-杰瑞

编辑:

我应该补充一点,我能够使用本地分配的 IP 地址在本地进行 ssh。

答案1

警告意味着主机 ID 已更改(从旧安装更改为新安装)。很好!它起作用了,让你知道它已经改变了……

以非特权用户(非 root)身份登录并创建隐藏目录 /home/jerry/.ssh:

cd; mkdir .ssh; chmod 0700 .ssh

此时,您可以将主机添加到known_hosts文件(/home/jerry/.ssh/known_hosts)。

或者,如果您以访客身份连接,请与用户访客(而不是 jerry)执行相同的操作。

请注意,如果您希望为所有新用户创建 .ssh 目录,则将 .ssh 目录添加到 /etc/skel。/etc/skel 目录包含所有新用户应拥有的文件和目录。

sudo mkdir /etc/skel/.ssh; sudo chmod 0700 /etc/skel/.ssh

之后,您创建的每个新用户都将拥有一个具有正确权限(0700)的.ssh 目录。

相关内容