将.pem密钥迁移至其他目录是否影响SSH连接?移动密钥后主机验证提示是否仍会出现?
SSH连接常见问题实操解答
第一问:将.pem密钥文件迁移到其他目录,只要连接时路径填写正确,会不会影响正常SSH连接能力?
- 只要执行
ssh -i命令时传入的路径和密钥实际存储位置完全匹配,单纯移动文件存储目录不会对连接能力造成任何影响。 - SSH 本身只是按照
-i参数指定的路径去读取私钥文件,根本不关心这个文件之前的存储位置,只要路径对、文件能正常读取,就不会影响后续的身份认证流程。 - 两个高频踩坑点需要留意:
- 别把迁移后的私钥文件权限设置过松:SSH 对私钥权限有强制校验,要求私钥不能对同组用户、其他用户开放读写权限,如果移动过程中把密钥权限改成了全局可读写,哪怕路径完全正确,SSH也会直接拒绝加载该私钥,抛出「Permissions are too open」的报错。
- 相对路径要和当前执行命令的工作目录匹配:如果连接命令里写的是相对路径(比如
-i ./my-key.pem),要注意这个路径是相对于你当前敲命令的目录解析的,换了目录执行命令但没同步改路径,就会出现找不到密钥文件的问题,直接改用密钥的绝对路径就能规避这类问题。
第二问:完成密钥的目录迁移后,之前遇到的主机真实性验证提示还会出现吗?
- 这个主机验证提示和你的.pem登录私钥存在哪个目录完全无关。
- 这个提示的触发逻辑是SSH客户端在本地的
~/.ssh/known_hosts文件中,检索是否存在当前连接目标主机的公钥记录。你之前已经手动确认过一次,把这台EC2实例的ECDSA公钥永久写入了本地known_hosts文件,不管你把登录私钥移到本地电脑的哪个文件夹,只要这份known_hosts文件没有被改动,后续连接同一台EC2实例时,不会再弹出首次连接的主机真实性验证提示。 - 只有以下场景会重新触发该验证提示:
- 更换了本地电脑/切换了本地SSH使用的用户,新的运行环境中没有留存这台目标主机的公钥记录;
- 手动删除了本地known_hosts文件中对应该EC2实例的公钥记录;
- 重新部署/更换了EC2实例,实例本身的主机公钥发生了变化,SSH检测到本地记录和实际主机公钥不匹配时,会弹出对应验证/警告提示。
内容的提问来源于stack exchange,提问作者Diana
相关产品推荐
相关产品推荐

