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

SSH密钥登录是否不受中间人(MiTM)攻击?请求解析登录步骤与原理

SSH密钥登录与中间人(MiTM)攻击:真相、步骤与原理

嘿,咱们先把你的问题拆解开,一步步说清楚:

一、“SSH密钥登录不受MiTM攻击”的说法准确吗?

答案是不完全绝对,但抗性远高于密码登录。

SSH密钥登录并非完全免疫中间人攻击,但它的设计让攻击成功的难度极大——只有在你第一次连接陌生服务器,且未核对主机指纹就盲目信任的情况下,才有可能被MiTM攻击得逞。而后续连接时,因为你的本地设备已经存储了服务器的合法主机指纹,一旦中间人伪造服务器身份,SSH会立刻触发严重警告,阻止你登录。

二、SSH密钥登录的具体步骤

我给你梳理最常用的标准流程,操作起来很简单:

1. 本地生成密钥对

首先在你的本地机器上生成一对非对称密钥:一个必须严格保密的私钥,和一个可以安全共享的公钥。推荐用安全性更高的ed25519算法,执行命令:

ssh-keygen -t ed25519

执行后会提示你设置密钥存储路径(默认~/.ssh/id_ed25519即可),还可以设置一个密钥密码(passphrase)——这是额外的保护层,就算私钥不慎泄露,没有这个密码也无法使用。

2. 将公钥上传到目标服务器

有两种常用方式:

  • 自动上传(推荐):用ssh-copy-id工具一键完成,它会自动把公钥添加到服务器的authorized_keys文件,还会帮你设置正确的权限(权限错误会导致SSH拒绝登录):
    ssh-copy-id your_username@server_ip_address
    
  • 手动上传:如果没有ssh-copy-id,可以手动操作:
    1. 查看本地公钥内容:cat ~/.ssh/id_ed25519.pub,复制输出的全部内容;
    2. 用密码登录服务器,创建.ssh目录(如果不存在):mkdir -p ~/.ssh;
    3. 将复制的公钥内容追加到authorized_keys文件:echo "复制的公钥内容" >> ~/.ssh/authorized_keys;
    4. 设置正确权限:
      chmod 700 ~/.ssh
      chmod 600 ~/.ssh/authorized_keys
      

3. 测试密钥登录

完成以上步骤后,直接用SSH命令登录,不需要输入服务器密码:

ssh your_username@server_ip_address

如果之前设置了密钥密码,会提示你输入一次,之后就能成功登录了。

三、为什么SSH密钥登录不易遭受MiTM攻击?

核心原因有两个,咱们逐个说:

1. 主机指纹的信任校验机制

当你第一次连接服务器时,SSH会显示服务器的主机指纹(比如ED25519 key fingerprint is SHA256:xxxxxx...),并询问你是否信任这台主机。如果你通过安全渠道(比如服务器提供商的后台、线下运维人员)核对过指纹,确认无误后选择信任,这个指纹就会被存储到本地的~/.ssh/known_hosts文件中。

后续每次连接时,SSH会自动对比服务器返回的指纹和本地存储的指纹:

  • 如果一致,正常登录;
  • 如果不一致,SSH会弹出红色的警告,直接阻止你登录——这时候你就知道大概率遇到了中间人攻击,不会再继续连接。

2. 基于非对称加密的认证逻辑

密钥登录的认证流程从根本上杜绝了中间人伪造身份的可能:

  1. 当你发起登录请求,服务器会发送一个随机字符串给你的本地客户端;
  2. 客户端用自己的私钥对这个随机字符串进行签名,然后把签名发回服务器;
  3. 服务器用你之前上传的公钥验证这个签名:只有私钥对应的公钥才能验证通过;
  4. 验证通过后,服务器允许你登录。

中间人就算截获了这个随机字符串,也没有你的私钥,根本无法生成有效的签名——就算冒充服务器,也过不了认证这一关,自然无法劫持你的登录会话。

内容的提问来源于stack exchange,提问作者joven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:29:42