侧边栏壁纸
博主头像
华灯上 博主等级

行动起来,活在当下

  • 累计撰写 178 篇文章
  • 累计创建 26 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

去密码化之OpenWrt/Debian/Ubuntu使用密钥登陆

华灯
2025-07-28 / 0 评论 / 0 点赞 / 3 阅读 / 0 字

最近折腾的设备有点多,需要监控设备的运行情况,资源占用这些。

我是直接通过软件登陆SSH来查看的,简单 直接。但是很危险,尤其是使用密码来登陆的情况下。

容易被脚本小子暴力破解。安装Fail2ban可以缓解,但是并不是万无一失。

Screenshot_2025-07-28-12-32-13-411_tech.lolli.toolbox

而各网站,APP的登陆密码,NAS, 路由器的后台登陆密码也是一样,太复杂 ,太多了会容易忘,搞成一样的密码容易被破解,尤其在某个网站泄密后,其他网站登陆密码你敢不改?

网站,APP的登陆密码可以使用 2FA 两步验证这些,会安全许多,或者使用自己架设BitWarden的服务来搞个及其复杂的密码来避免被暴力破解。

本文则是SSH密码登陆设备更换成密钥登陆的教程。

禁止密码登陆,使用密钥对来登陆。这样安全的多而且更方便登陆了。

对比 SSH 密钥登录 VS 账号密码登录

✅ SSH 密钥登录

方式:使用一对密钥(私钥保存在客户端,公钥配置在服务器)

优点:

安全性极高,抗暴力破解
支持自动化(如 Jenkins 自动部署)
支持无密码批量登录
缺点:

初次配置稍繁琐,需要拷贝公钥到服务器
私钥需妥善保管,丢失则无法登录
✅ SSH登录应用场景:
运维人员远程登录服务器/NAS/软路由之类

Git仓库访问(如 git@github.com
自动部署脚本连接服务器
使用 SCP/SFTP 安全传输文件
内网端口转发、跳板机方案

✅ 账号密码登录

方式:传统方式,输入用户名和密码进行验证

优点:

简单易用,上手快
不依赖本地私钥
缺点:

安全性低,容易被爆破
不适合自动化任务
多人共用账号时难以追踪

那么下面正式开始教程:

一,生成密钥对

方法还挺多的,比如前面提到的bitwarden中直接生成密钥,创建一个文本文件,将公钥内容复制到里面就可以了。

比如我使用的远程工具MobaXterm也有生成密钥对的功能。

本文则是使用Win系统自带的CMD/PowerShell来生成。

打开软件 输入

cd .ssh

ssh-keygen

QQ20250728-210958

如上图 不指定的话,直接回车就行:

  • Enter file in which to save the key:密钥存放地址,默认为当前用户目录下的.ssh文件夹下。
  • Enter passphrase:保护私钥的密码,一般留空,直接回车。
  • Enter same passphrase again:确认私钥密码

如果需要指定格式,名称,长度, 则可以输入下面的:

ssh-keygen -t rsa -f openwrt -b 2048 -v "youremail@domain.com"

openwrt:替换成你想要文件的名字。

"youremail@domain.com" 改成你自己的邮箱,或者干脆去掉也可以

ssh-keygen -t rsa -f openwrt -b 2048 -v

进入用户名文件夹即可看到我们生成的密钥 比如路径为 C:\Users\用户名\.ssh

如果是使用简化的ssh-keygen命令生成的密钥对,则默认的文件名为id_rsa和id_rsa.pub

  • id_rsa:生成的私钥,保留在电脑即可。
  • id_rsa.pub:生成的公钥,打开后,复制内容,后文部署到服务器上。

右键使用记事本打开id_rsa.pub,内容复制下来。

二,Ubuntu/Debian服务端部署公钥

如果服务器在阿里云/腾讯云上的 在控制台是可以一键创建部署的

QQ20250728-214413

本文讲的是通用方法,使用远程工具登陆linux/OpenWrt来部署

先在本地debian/ubuntu虚拟机上部署公钥.

① 使用SSH工具登陆debian/Ubuntu:

因为以前开启的密码登陆,所以先用软件通过密码登陆debian/Ubuntu

进入.ssh文件夹内(如果没有就使用mkdir命令创建),并编辑authorized_keys文件:

cd .ssh

vim authorized_keys

把前面复制的内容粘贴进去 ,:wq保存并退出即可。

QQ20250728-120800

到此,SSH密钥登录的服务器端,配置完成。接下来,我们就可以使用客户端连接了。

QQ20250728-121305

个人使用的MobaXterm里面把使用私钥勾上,并选择上私钥 id_rsa 文件。

测试一切OK!

② 关闭密码登陆

既然测试密钥登陆成功了,那么肯定要关闭密码登陆,否则白折腾了。

vi /etc/ssh/sshd_config

找到: PasswordAuthentication yes 这一行

取消前边的 # 注释,改为

PasswordAuthentication no

:wq保存退出

QQ20250728-121118

但是,还没好!!!

这里有个大坑,

以前一直以为修改完重启下SSH服务就好了,后来偶然试了一下密码,竟然还能登陆!

QQ20250728-121149

原来/etc/ssh/sshd_config.d/路径下有个50-cloud-init.conf文件。

把这个文件里面的 PasswordAuthentication yes也改成PasswordAuthentication no

最后再重启 ssh 服务

service ssh restart

重新使用登陆,密码已经连接不上了

QQ20250728-122732

完成!!!

三,OpenWrt/iStoreOS使用密钥登陆

根据前面第一步的方法,重新生成一个密钥对。把生成的.pub公钥文件重命名为authorized_keys 主要不要有后缀。

① 上传公钥文件

openwrt使用dropbear来管理SSH登录的,所以和上面的linux路径不同。

先使用密码登陆OpenWrt/iStoreOS的SSH,把authorized_keys文件保存到/etc/dropbear/目录并设置权限。

chmod 700 /etc/dropbear
chmod 600 /etc/dropbear/authorized_keys

② 禁用密码登陆

QQ20250728-122701

为了进一步增强安全性,你可以在软路由上禁用密码登录,只允许密钥登录。编辑软路由的SSH配置文件

vim /etc/config/dropbear

找到以下行并进行修改:

option PasswordAuth 'no'

然后重启SSH服务:

/etc/init.d/dropbear restart

关闭密码登录不会影响OpenWrt/iStoreOS的网页端登录,所以大家务必不要在公网暴露网页端登录端口(一般是路由器的80/443端口)。

至此修改完毕,本地ubuntu虚拟机和软路由都已经修改完毕了,一定妥善保存存在本地的私钥,ubuntu虚拟机的私钥丢了,可以在绿联虚拟机后台VNC连接修改回密码登陆,而路由器的私钥万一丢失就很麻烦了。

至于实体机的fnOS和绿联为什么不改成密钥登陆?

因为这2台设备平时根本不打开SSH端口啊。

当然想改也可以,这2个系统都是基于debian的,所以方法和上面的一样。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
  3. QQ打赏

    qrcode qq

评论区