SSH基础使用问答

举报
黄生 发表于 2025/12/31 13:34:56 2025/12/31
【摘要】 问题一:在~/.ssh/id_rsa.pub文件一行最后一部分是: mspore@cloud-5467032f-43b6-435d-9ea9-868472015da0-78b5784f8-ndp7f这个内容有重要作用吗?如果我机器的hostname变了,是否还可以用秘钥对连接上?答:这个最后部分(注释)的作用其实不大,主要是为了方便识别这个公钥的“拥有者”或“来源”。(是谁的、来自哪台机器)...

问题一:

在~/.ssh/id_rsa.pub文件一行最后一部分是: mspore@cloud-5467032f-43b6-435d-9ea9-868472015da0-78b5784f8-ndp7f
这个内容有重要作用吗?如果我机器的hostname变了,是否还可以用秘钥对连接上?

答:

这个最后部分(注释)的作用其实不大,主要是为了方便识别这个公钥的“拥有者”或“来源”。(是谁的、来自哪台机器)

  1. id_rsa.pub 的结构:ssh-rsa AAAAB3NzaC1yc2E… (很长的密钥字符串) mspore@cloud-5467032f-…

    第一部分:密钥类型(如 ssh-rsa, ssh-ed25519)第二部分:公钥内容本身 第三部分:注释

  2. SSH协议本身完全不依赖这个注释部分来进行认证

所以如果你的机器 hostname 变了:完全不影响 SSH 密钥连接!甚至注释部分可以删除掉,也不影响正常连接。

问题二:

为什么我的ECS重启后,再通过ssh连接会报这个错:
The fingerprint for the ECDSA key sent by the remote host is
SHA256:F2A61epwZiQP3+f79yMJHVqxW2oTuj4/wVjML5y+Sxs.
Please contact your system administrator.
Add correct host key in C:\Users\hao/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\Users\hao/.ssh/known_hosts:24
Host key for 1.9.48.88 has changed and you have requested strict checking.
Host key verification failed.

答:

问题原因:

  1. SSH主机密钥:每台SSH服务器都有自己唯一的“主机密钥”(类似服务器的指纹)
  2. known_hosts文件:你的电脑记录了之前连接时的服务器指纹
  3. 重启后指纹变了:
    • ECS重启后可能分配了新的IP地址
    • 或者云服务商重新部署了实例(更换了底层虚拟机)
    • 或者系统镜像重置了SSH主机密钥

这个警告是SSH的安全特性,防止“中间人攻击”。如果有人尝试冒充你的服务器,这个机制会让你知道。

方案1:删除旧的指纹记录(最常用)

# 删除该IP对应的旧指纹(Windows)
ssh-keygen -R 1.9.48.88

# 或者手动编辑 C:\Users\hao\.ssh\known_hosts 文件
# 删除第24行(错误提示中指出的行)

方案2:临时跳过验证(仅测试用)

# 不推荐长期使用,会降低安全性
ssh -o StrictHostKeyChecking=no username@1.9.48.88

方案3:自动接受新密钥

# 先删除旧记录
ssh-keygen -R 1.9.48.88
# 重新连接并自动接受新指纹
ssh -o StrictHostKeyChecking=accept-new username@1.9.48.88

问题三:

1.9.48.88 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFK0wQdMkttQOR/XWFOb3qsvfyl8sZy55A9mPd+CDhZN
1.9.48.88 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBhm4YewnG8pOFa/hxu8MabV15MKLYQLj+yfydro5nbj6gUPHvmTVaXXiy2N7/VSRBMAP0zMyIHv9B5Kyx1O+Fo=
第一行是我ssh连接它,提示并允许连接时保存的,第二行是ssh-keyscan -t ecdsa 1.9.48.88 >> ~/.ssh/known_hosts 保存的,为什么这2行内容不一样

答:

两种不同的密钥类型。第一行:ssh-ed25519

1.9.48.88 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFK0wQdMkttQOR/XWFOb3qsvfyl8sZy55A9mPd+CDhZN
  • 类型:Ed25519(椭圆曲线算法,更现代、更安全)
  • 特点:密钥短(256位)、性能好、安全性高
  • 你的SSH客户端默认优先使用这个类型

第二行:ecdsa-sha2-nistp256

1.9.48.88 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBhm4YewnG8pOFa/hxu8MabV15MKLYQLj+yfydro5nbj6gUPHvmTVaXXiy2N7/VSRBMAP0zMyIHv9B5Kyx1O+Fo=
  • 类型:ECDSA(椭圆曲线数字签名算法)也是椭圆曲线算法,但标准不同
  • ssh-keyscan 使用 -t ecdsa 参数,所以只获取ECDSA类型的密钥

为什么服务器有多个密钥?为了兼容不同类型的SSH客户端。SSH服务器支持多种密钥算法:默认会生成多种类型的密钥 常见的有:RSA、ECDSA、Ed25519 。查看服务器上的所有密钥:

    ls -la /etc/ssh/ssh_host_*
    # 通常会有:
	# ssh_host_rsa_key      (RSA)
    # ssh_host_ecdsa_key    (ECDSA)
    # ssh_host_ed25519_key  (Ed25519)

客户端连接时会选择双方都支持的算法进行验证

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。