ssh 配置密钥登录(控制台操作篇)

引言

密钥简单概念:

首先要生成一对独一无二的“钥匙对”:一把私钥(自己保管,绝不外泄)和一把公钥(可以公开,相当于锁芯)。

当把“锁芯”(公钥)安装到服务器的门上之后,每次开门时,只需带上自己的“私钥”(通过 -i 参数指定),服务器验证匹配后,门就自动开了,全程无需密码。相当于将自己的钥匙插入服务器上的锁芯即可。

此处为快速理解,底层操作非锁和钥匙这般操作,详细可以自行了解。

密钥核心优势:

  1. 抗暴力破解:总所周知,密码是可以被暴力破解的。
  2. 自动化友好:写一些自动化脚本,让其自己拿着密钥登录服务器完成一些操作。(机器人)
  3. 精准权限控制:限制服务器下某个用户只能执行某些命令,例如一个只能定时执行备份操作的用户。(机器人)

密钥核心缺陷:

  1. 私钥泄露风险:如果没有搭配密钥生命周期管理,丝毫不亚于将整栋大楼送给了黑客。
  2. 密钥生命周期管理:如果某公司员工离职,却还持有永不失效的公司通行证,是相当不安全的。
  3. 中间人攻击风险:有人穿制服冒充工作人员(中间人),把你引导到伪装的”银行网点”,你把密码和账号都交给了骗子。

对于这些缺陷,在宏观上,可以采取「为每个用户分配独立的密钥对」做到基本的风险隔离。

在颗粒度上,可以采用「加密私钥 + 硬件密钥」、「自动轮换密钥」、「预置指纹+严格模式」或者「主机证书体系」。(SSH 通过 known_hosts 文件记录服务器指纹,首次连接时提示确认指纹,StrictHostKeyChecking yes 模式下会拒绝连接未知指纹的服务器)

若非中大型企业,这些就够了,不用过分追求这方面的防护。

创建密钥并导入服务器

  1. 登录 阿里云控制台
  2. 进入 云服务器 ECS → 选择目标实例 → 安全组 → 配置规则确保 22 端口开放
  3. 左侧导航栏 网络与安全 → 密钥对 → 创建密钥对
    • 输入自定义密钥对名称(如 my-keypair
    • 自动创建密钥对 选定好对应资源组
    • 点击 确定(此时会自动下载私钥,务必妥善保管)
    • 绑定私钥,将其注入服务器中管理公钥authorized_keys 文件

最后将密钥对绑定到服务器上:

重启服务器:

图片[5]-ssh 配置密钥登录(控制台操作篇) - 渔网札记-渔网札记

重启完成后,阿里云会自动将公钥注入服务器根用户的此文件中 ~/.ssh/authorized_keys

图片[6]-ssh 配置密钥登录(控制台操作篇) - 渔网札记-渔网札记

使用密钥登录服务器

将刚才保存的私钥拷贝一份到本地 ~/.ssh/ 路径下,或者直接指定自定义保存密钥的路径。

打开连接 ssh 的工具(Mac 用户终端即可,Windows 可以使用 Xshell),使用如下命令进行登录。

ssh -i your_file_path root@your_server_ip
# ssh -i ~/.ssh/blog_lilwhale.pem root@your_server_ip   # 我的文件路径

-i 参数的全称是 identity_file,意思就是“指定使用哪个身份文件(也就是私钥)去尝试登录”。」

检查权限

图片[7]-ssh 配置密钥登录(控制台操作篇) - 渔网札记-渔网札记

原因:这是因为你的 SSH 私钥文件权限过于开放,系统出于安全考虑拒绝使用它。你需要调整私钥文件的权限,确保只有所有者有读写权限。

解决方案:打开你的终端,更改这个文件的权限即可:

chmod 600 your_file_path
# chmod 600 ~/.ssh/blog_lilwhale.pem   # 我的文件路径

现在如果直接使用 ssh root@your_server_ip 是会报错 拒绝许可(publicKey)。不需要你进入服务器关闭密码登录,前面在控制台中将密钥绑定服务器这一步,就已经自动给用户配好了。

最后配置好后,一定要检查服务器和本地上的私钥或公钥所在目录权限是否为 700,私钥或公钥文件是否为 600。

总结

谨记:私钥是在用户自己手上,公钥是在服务器上。

总的来说,直接到服务器控制台创建密钥对即可,后续的操作基本上是傻瓜式,需要下载到本地的就是私钥,注入到服务器的肯定就是公钥。用户通过私钥去登录服务器

拓展

加密私钥

自动轮换密钥

预置指纹+严格模式

© 版权声明
喜欢就支持一下吧
点赞1993赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码快捷回复

    暂无评论内容