一条命令开启远程 Linux 的 SSH:脚本下载地址、执行命令与用途说明
这篇文章只保留最关键内容:SSH 初始化脚本、SSH 检测脚本的下载地址、执行命令、常见错误提示,以及这两个脚本分别能做什么。
一句话说明
如果你已经能进入一台远程 Linux 机器的终端,但它还没开好 SSH,或者还没把公钥登录配置完整,那么这篇就只保留最关键的内容:
- 初始化脚本下载地址
- 检测脚本下载地址
- 一条命令执行方式
- 这两个脚本分别是干什么的
![]()
初始化脚本下载地址
用于直接启用 SSH、写入公钥、修权限的脚本:
检测脚本下载地址
用于自动检查 SSH 服务、22 端口、authorized_keys 路径和常见问题的脚本:
一条命令执行:初始化脚本
如果你想直接按默认用户执行:
curl -fsSL https://blog.pophcc.com/api/raw/obsidian-assets/scripts/enable-ssh-and-install-key.sh -o /tmp/enable-ssh-and-install-key.sh
sudo bash /tmp/enable-ssh-and-install-key.sh
如果你想明确指定给 root 用户写入公钥:
curl -fsSL https://blog.pophcc.com/api/raw/obsidian-assets/scripts/enable-ssh-and-install-key.sh -o /tmp/enable-ssh-and-install-key.sh
sudo bash /tmp/enable-ssh-and-install-key.sh root
如果你是给当前普通用户开 SSH 公钥登录,也可以这样:
curl -fsSL https://blog.pophcc.com/api/raw/obsidian-assets/scripts/enable-ssh-and-install-key.sh -o /tmp/enable-ssh-and-install-key.sh
sudo bash /tmp/enable-ssh-and-install-key.sh your-user
一条命令执行:检测脚本
默认检测当前用户和 22 端口:
curl -fsSL https://blog.pophcc.com/api/raw/obsidian-assets/scripts/ssh-doctor.sh -o /tmp/ssh-doctor.sh
bash /tmp/ssh-doctor.sh
如果你想指定要检查的用户,例如 root:
curl -fsSL https://blog.pophcc.com/api/raw/obsidian-assets/scripts/ssh-doctor.sh -o /tmp/ssh-doctor.sh
bash /tmp/ssh-doctor.sh root
如果你想检查别的 SSH 端口,例如 2222:
curl -fsSL https://blog.pophcc.com/api/raw/obsidian-assets/scripts/ssh-doctor.sh -o /tmp/ssh-doctor.sh
SSH_PORT=2222 bash /tmp/ssh-doctor.sh root
初始化脚本是干什么的
这个脚本会顺手把 SSH 启用链路里最常见的几步都做掉:
- 检查机器上是否已经安装 OpenSSH Server
- 如果没装,就尝试自动安装
- 自动识别服务名是
ssh还是sshd - 启动 SSH 服务
- 设置 SSH 开机自启
- 创建目标用户的
~/.ssh目录 - 创建或更新
authorized_keys - 写入预设公钥
- 修复
.ssh和authorized_keys的权限 - 如果系统带
ufw或firewalld,会顺手尝试放通22端口
说白了,它的用途就是:
把一台刚接手、刚装完、或者 SSH 还没配好的 Linux 机器,快速整理到“可以用 SSH 公钥登录”的状态。
检测脚本是干什么的
这个脚本不会直接修改你的系统,它主要负责“查问题出在哪里”。
它会自动检查:
sshd二进制是否存在openssh-server是否已安装- 服务名到底是
ssh还是sshd - SSH 服务是否正在运行
- SSH 服务是否设置为开机自启
22端口是否真的在监听- 本机是否启用了
ufw或firewalld - 防火墙是否明显放通了 SSH
sshd_config是否存在PermitRootLoginPubkeyAuthenticationPasswordAuthenticationAuthorizedKeysFile- 目标用户的
~/.ssh是否存在 authorized_keys路径是否正确.ssh和authorized_keys权限是否异常- 机器上有没有
curl/wget
最后它会给出:
PASSWARNFAIL
并附上比较像人话的总结,方便你判断问题是在:
- 没装 OpenSSH
- 服务没启动
- 端口没监听
- 防火墙没放开
- 公钥路径不对
- 权限不对
什么时候该用哪个脚本
场景 1:你想直接把 SSH 开起来
用初始化脚本:
enable-ssh-and-install-key.sh
场景 2:你已经装过 SSH,但 22 端口还是不通
先用检测脚本:
ssh-doctor.sh
场景 3:你不确定问题在服务、端口、权限还是配置
还是先用检测脚本。
因为这种时候最怕的不是“不会改”,而是:
还没看清问题,就先一顿乱改。
常见错误提示与处理办法
报错 1:找不到命令 “curl”
这表示:
- 目标机器没有安装
curl - 所以后面的脚本文件不会被下载到
/tmp
接着再执行:
sudo bash /tmp/enable-ssh-and-install-key.sh
就会继续看到:
没有那个文件或目录
因为脚本文件实际上根本没下载下来。
处理方法
如果是 Ubuntu / Debian:
sudo apt update
sudo apt install -y curl
装完后再重新执行:
curl -fsSL https://blog.pophcc.com/api/raw/obsidian-assets/scripts/enable-ssh-and-install-key.sh -o /tmp/enable-ssh-and-install-key.sh
sudo bash /tmp/enable-ssh-and-install-key.sh
如果机器没有 curl,但有 wget,也可以直接改成:
wget -O /tmp/enable-ssh-and-install-key.sh https://blog.pophcc.com/api/raw/obsidian-assets/scripts/enable-ssh-and-install-key.sh
sudo bash /tmp/enable-ssh-and-install-key.sh
同理,检测脚本也可以这样下载:
wget -O /tmp/ssh-doctor.sh https://blog.pophcc.com/api/raw/obsidian-assets/scripts/ssh-doctor.sh
bash /tmp/ssh-doctor.sh
最后
以后如果我再更新远程初始化脚本或 SSH 检测脚本,只要博客上的这两个链接不变,你就可以继续直接下载使用。
这也是我把它们挂到博客上的原因:
需要时,直接
curl或wget,不用再翻聊天记录。
读者反馈
你希望这篇文章补充什么?
可以留下你想看的功能、改进建议或后续教程方向。我会定期整理。
最新建议
还没有建议,你可以抢个沙发。
为了去重统计,只保存 IP、浏览器信息和本机指纹的哈希,不保存明文 IP。