一个用于交互式安全配置 OpenSSH Server 的小工具:通过安装脚本生成并安装命令 ssh-config,支持你按需单独完成以下配置:
- 是否允许 root 登录(
PermitRootLogin) - 是否禁用密码登录(
PasswordAuthentication) - 为指定用户添加 SSH 公钥(
authorized_keys)
并在需要修改 sshd_config 时做备份与语法校验,最后自动重启 SSH 服务。
- 交互式向导:三项能力都可以独立选择或跳过(默认行为与旧版一致:仍会提示你配置这三项)。
- 支持命令行参数:可非交互地单独设置 root 登录 / 密码登录 / 添加公钥。
- 多种公钥来源:
- 直接粘贴公钥
- 输入 URL(脚本会抓取第一行作为公钥)
- 输入
github:用户名/gitlab:用户名(自动从*.keys拉取)
- 安全措施:
- 修改前备份
/etc/ssh/sshd_config sshd -t语法测试失败则恢复备份并退出- 重启 SSH 服务失败则恢复备份并退出
- 修改前备份
- 日志记录:执行日志写入
/var/log/ssh-config.log
- Linux 服务器(需要可管理 OpenSSH Server;脚本会操作
/etc/ssh/sshd_config并重启服务) - 必须 root 权限(
install.sh与ssh-config都会检查id -u) - 依赖命令(通常系统自带或可安装):
bash,sshd,sed,grep,cp,chmod,chown,getentcurl(用于从 URL / GitHub / GitLab 拉取公钥)systemctl或service(用于重启 SSH 服务)
Windows 上请在目标 Linux 服务器执行,或使用 WSL(且需要能管理 WSL 内的 SSH 服务与
/etc/ssh/)。
在目标服务器上执行(默认以 root 身份运行;请先 su - 切到 root 再执行):
wget -O install.sh "https://raw.githubusercontent.com/B-ug/sshcfg/refs/heads/main/install.sh" && chmod +x install.sh && ./install.sh安装完成后会生成并安装命令:
ssh-config→/usr/local/bin/ssh-config
运行菜单式向导(必须 root):
ssh-config你会先看到一个编号菜单,按需选择你要做的事情:
-
- root 登录设置(
PermitRootLogin)
- root 登录设置(
-
- 密码登录设置(
PasswordAuthentication)
- 密码登录设置(
-
- 添加公钥(写入
authorized_keys)
- 添加公钥(写入
-
- 应用以上选择并重启 SSH(如需要)
-
- 清空所有选择
-
- 退出
你可以只选其中一项(例如只做 root 登录设置),也可以多选后再统一“应用”。
- 配置备份目录:
/etc/ssh/backups/- 备份文件类似:
/etc/ssh/backups/sshd_config.YYYYmmdd_HHMMSS.bak
- 备份文件类似:
- 日志文件:
/var/log/ssh-config.log
脚本会在 /etc/ssh/sshd_config 中按需设置/更新(若已存在会替换,包含被注释的条目):
PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keysPermitRootLogin yes|no|prohibit-password(由交互/参数决定)PasswordAuthentication yes|no(由交互/参数决定)
并为目标用户写入公钥到:
<用户家目录>/.ssh/authorized_keys
同时确保权限合理:
~/.ssh:700authorized_keys:600
- 在禁用密码登录前,请务必确认你的密钥登录可用,否则可能把自己锁在服务器外。
- 强烈建议在远程服务器操作时:
- 保持当前 SSH 会话不断开
- 另开一个新终端测试新配置连接成功后,再关闭旧会话
- 若服务器有控制台/救援模式,请确保你有备用登录方式以防万一。
本项目的安装行为是把命令脚本写入 /usr/local/bin/ssh-config,卸载只需删除该文件:
rm -f /usr/local/bin/ssh-config(不会自动回滚你已修改的 SSH 配置;如需回滚请从 /etc/ssh/backups/ 选择备份恢复。)