SSH基础使用问答
问题一:
在~/.ssh/id_rsa.pub文件一行最后一部分是: mspore@cloud-5467032f-43b6-435d-9ea9-868472015da0-78b5784f8-ndp7f
这个内容有重要作用吗?如果我机器的hostname变了,是否还可以用秘钥对连接上?
答:
这个最后部分(注释)的作用其实不大,主要是为了方便识别这个公钥的“拥有者”或“来源”。(是谁的、来自哪台机器)
-
id_rsa.pub 的结构:ssh-rsa AAAAB3NzaC1yc2E… (很长的密钥字符串) mspore@cloud-5467032f-…
第一部分:密钥类型(如 ssh-rsa, ssh-ed25519)第二部分:公钥内容本身 第三部分:注释
-
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.
答:
问题原因:
- SSH主机密钥:每台SSH服务器都有自己唯一的“主机密钥”(类似服务器的指纹)
- known_hosts文件:你的电脑记录了之前连接时的服务器指纹
- 重启后指纹变了:
- 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)
客户端连接时会选择双方都支持的算法进行验证
- 点赞
- 收藏
- 关注作者
评论(0)