
写在最前面:
论坛注册用户已经超过 6 万了,每天都有不少新面孔加入 NodeSeek。很多刚接触 VPS、独服、小鸡的朋友,第一步经常会卡在一些服务器的基础操作上:
- SSH 密钥怎么生成?
- GitHub 公钥怎么托管?
- 新机器为什么禁用密码登录?
- 新机器怎么禁用密码登录?
- SSH 端口为什么要改?
- GitHub OAuth 怎么配置?
- 面板怎么部署到域名和 HTTPS?
其实这些操作本身不算复杂,很多命令复制粘贴就能搞定。但对第一次接触的新手来说,还是很容易出岔子,尤其是 SSH 配置这块,一旦配错就可能把自己锁在服务器外面。
所以我做了一个小项目:OU-SSH。

它不打算做成一个厚重的运维平台,定位更偏向“服务器基础安全初始化教程 + 小工具面板”。希望新来的朋友能通过它快速搞懂、并完成服务器初始化里最基础、也最容易踩坑的那部分。
如果你是老 MJJ,也欢迎 fork 二创,改成自己顺手的工具箱,或者加入你需要的功能。
新手常见疑问
Q:为什么建议改掉默认的 22 端口?
A:SSH 默认端口是:22
这就意味着互联网上的扫描器、爆破工具、弱密码机器人,在你机器一开机就会第一时间来扫这个端口。
只要服务器公网开着 22 端口,日志里基本天天能看到各种陌生 IP 在试图登录:
root、admin、test、ubuntu、oracle
甚至会没完没了地尝试各种常见弱密码。
把 SSH 端口从 22 改成其他端口,比如 OU-SSH 默认推荐的:5522
但这不代表改了端口就“绝对安全”了。改端口本质上不算核心安全机制,只是能降低被无脑扫描和自动化爆破工具盯上的概率。
简单说:
- 22 端口是最默认的靶子
- 换个非默认端口能挡掉一大堆低级扫描和爆破日志
- 真正的安全性还是得靠密钥登录、禁用密码登录、防火墙和系统更新
所以改 SSH 端口不是拿来替代安全配置的,只是基础加固的一环。
Q:为什么建议禁用 root 的密码登录?
A:很多新手刚拿到服务器,服务商会直接给一个 root 密码,于是就直接:
ssh root@服务器IP
这样是挺方便,但安全隐患也比较明显。
密码登录本身就存在几个先天问题:
- 密码可能太弱
比如生日、手机号、常见单词、默认密码,或者重复用过的旧密码。 - 密码可能泄露
同一个密码在好几个地方用过,只要其中一个平台泄露,服务器也可能被拖库撞中。 - 密码可以被暴力尝试
只要 SSH 还允许密码登录,攻击者就能没完没了地试各种用户名密码组合。 - root 是最高权限用户
root 密码一旦被猜中,对方拿到手的就是整台服务器的最高权限。
所以从安全角度讲,直接开放 root 密码登录不算是个好习惯。
更推荐的做法是:
使用 SSH 密钥登录
禁用密码登录
必要时再限制 root 登录
Q:为什么说 SSH 密钥登录更安全?
A:SSH 密钥登录靠的是一对密钥:
私钥:保存在你自己的电脑上 公钥:放在服务器或 GitHub 上
登录的时候不用输密码,而是靠私钥做加密认证。
它的好处在于:
- 私钥的长度和强度都比普通密码高得多
- 没法靠猜密码暴力破解
- 公钥可以随便公开,私钥不用上传到服务器
- 不同设备可以生成各自不同的密钥
- 某台设备丢了,单独移除对应的公钥就行
OU-SSH 到底是什么?
OU-SSH 是一个轻量的服务器节点管理面板,目前主要能干这几件事:
- 本地账号登录
- GitHub OAuth 登录 / 绑定
- Ed25519 SSH 密钥生成
- 密钥打包为
.zip下载 - GitHub 用户名绑定
- 自动生成新机初始化脚本
- 修改目标机器 SSH 端口,默认
5522 - 禁用密码登录,启用公钥登录
- 禁用键盘交互密码登录
- 兼容
sshd_config.d/cloud-init 这类云服务器常见配置覆盖问题 - Docker Compose 一键部署
- 可选域名 HTTPS,Caddy 自动申请和续签证书
项目定位很简单:
给新手 MJJ 一个尽量少踩坑的 SSH 初始化工具。
OU-SSH 默认使用的是 Ed25519 密钥,这是目前比较推荐的 SSH 密钥算法之一,速度快、安全性也很好。
需要注意的是:
私钥一定要自己保存好,不要上传到服务器,不要发给别人,不要提交到 GitHub。
一键安装
直接在服务器上执行:
bash <(curl -sL https://raw.githubusercontent.com/cshaizhihao/OU-SSH/main/install.sh)
安装脚本是中文交互式的,会问你有没有已经解析到本机的域名。
没有域名的话,可以直接用:
http://服务器IP:8080
要是有域名并且已经解析到这台服务器,可以在安装过程中直接启用 HTTPS,Caddy 会自动签发并续期证书。
默认的账号密码是:
账号:admin
密码:admin
首次登录会强制进入安全设置,建议第一时间改掉默认账号密码。
一键卸载与升级
安装完成后,脚本会自动生成一个面板指令 ou,输入这个指令就能一键升级、一键卸载。
后面会陆续加上:开荒指令(TCP 调优、时间校准、CF DDNS)、一键优化这些功能。
新手手把手上手流程
0. Cloudflare DNS 解析
先买一个自己喜欢的域名,在 CF 里给这个应用加一条 DNS 记录

关闭小黄云

PS:这一步不是必须的,但建议顺手配一下,反正后面迟早会用到。
1. 在服务器中安装
SSH 登录之后,在服务器上直接执行:
bash <(curl -sL https://raw.githubusercontent.com/cshaizhihao/OU-SSH/main/install.sh)
脚本会自动进行系统依赖安装、docker 安装以及本应用的安装

在这里,如果你已经添加过 DNS 解析,请输入 Y,没有则输入 N

输入刚才在 CF 里解析好的域名。
再输入一个证书邮箱,脚本就会自动完成安装并启动服务。
最后会生成类似下面的信息:

2. 登录面板
安装完成后打开面板地址,用默认账号登录:
admin / admin
首次登录会强制要求改账号密码。

3. 生成 SSH 密钥


进入「密钥生成器」,点一下生成。
面板会在后端生成 Ed25519 密钥对,打包成 .zip 给你下载。
压缩包里一般会有:
id_ed25519
id_ed25519.pub

私钥自己收好,不要传到服务器、GitHub 或任何别的地方。
4. 把公钥添加到 GitHub
把 .pub 公钥的内容加到 GitHub 的 SSH Keys 里。
去 GitHub 设置页面,或者直接点图里的链接跳转过去:
https://github.com/settings/keys


保存一下就行。
5. 输入 GitHub 用户名
在面板里填上你的 GitHub 用户名,比如:
cshaizhihao
面板会自动生成这样一个地址:
https://github.com/cshaizhihao.keys
之后新开的机器就能直接拉取你的 GitHub 公钥了。

6. 复制新机初始化脚本
进入「新机初始化指令」,可以设置 SSH 端口,默认用的是:
5522
把脚本复制到新服务器上,用 root 权限执行。
脚本会自动完成这些事:
- 创建
~/.ssh - 从 GitHub 拉取你的公钥
- 写入
authorized_keys - 修改 SSH 端口
- 禁用密码登录
- 禁用键盘交互密码登录
- 启用公钥登录
- 兼容
sshd_config.d - 兼容 cloud-init 覆盖 SSH 配置的情况
- 重启 SSH 服务
新手推荐的 SSH 安全配置组合
对大部分新手 MJJ 来说,基础配置先做到这几步就够了:
1. 修改 SSH 默认 22 端口
2. 使用 SSH 密钥登录
3. 禁用密码登录
4. 禁用键盘交互密码登录
5. 保持一个旧 SSH 窗口,确认新配置可登录后再关闭
OU-SSH 生成的新机初始化脚本,就是围着这几个目标做的。
它不是要把服务器变得“绝对安全”,而是帮新手先绕开最常见的那几个坑:
默认 22 端口暴露
root 密码被爆破
密码登录没有禁用干净
cloud-init 覆盖 sshd 配置
改完 SSH 后把自己锁外面
把这几个坑填上,服务器的基础安全性就会比刚到手时好不少。
重要提示
跑新机初始化脚本之前,一定要保持当前 SSH 窗口别关。
因为一旦禁用了密码登录,要是公钥没配置成功,你就可能把自己关在服务器外面进不去了。
推荐这样操作:
- 保持旧 SSH 窗口不关闭
- 执行初始化脚本
- 新开一个 SSH 窗口
- 使用新端口和密钥测试登录
- 确认能登录后,再关闭旧窗口
测试命令类似:
ssh -p 5522 root@你的服务器IP
如果你想确认密码登录是否真的禁用了,可以测试:
ssh -p 5522 -o PubkeyAuthentication=no -o PreferredAuthentications=password root@你的服务器IP
正常情况下这时候应该已经没法用密码登录了。
Q:为什么有些机器明明禁用了密码,还是能用密码登录?
A:这个坑我自己测试时也踩过。
很多云服务器读取的配置并不只是:
/etc/ssh/sshd_config
它还会读:
/etc/ssh/sshd_config.d/*.conf
比如 cloud-init 可能会写一个配置文件进去,里面依然保留着:
PasswordAuthentication yes
另外,有些系统就算设置了:
PasswordAuthentication no
但只要 KbdInteractiveAuthentication 还开着,照样能通过键盘交互的方式输密码登录。
所以新版脚本会把这几种情况一起处理掉,写进优先级更高的配置里。
关于 GitHub OAuth
面板也支持用 GitHub OAuth 登录和绑定账号。
不过这不是必须配置的,新手先用本地账号就够了。
要是想配置 GitHub OAuth,登录后进「安全设定」,面板里会给出 OAuth App 的创建入口和 Callback URL。
这个项目适合谁用?
比较推荐:
- 刚开始玩 VPS 的新手
- 不熟悉 SSH 密钥登录的朋友
- 想把 GitHub 公钥作为统一入口的人
- 想快速初始化新服务器的人
- 想做二创工具箱的老 MJJ
不太适合: - 想要完整堡垒机的人
- 想要多用户权限系统的人
- 想要重型 CMDB / 运维平台的人
OU-SSH 目前定位就是一个简单、轻量、偏教学和初始化 的小面板。
开源仓库
GitHub 地址:
https://github.com/cshaizhihao/OU-SSH
欢迎点个 Star,也欢迎 fork 之后自己二次创作。
如果你是新手,希望这个项目能让你少踩点 SSH 初始化的坑。
如果你是老 MJJ,也欢迎提 issue、发 PR,或者直接改成自己顺手的版本。
