一句话先说明要解决什么问题
为了让 AI 智能体能跨机部署、7×24 小时运行,你需要一种方式能随时随地远程管理 Ubuntu 主机——SSH 就是这把"远程钥匙",本文就是解决这个问题,照着本文做,15 分钟实现从客户端(Mac/Windows)SSH 登录到 Ubuntu Server。
§1 先聊点基础知识
如果你已经按 《Ubuntu Server 24.04 LTS 装机实战——为 AI 智能体打造 7×24 不间断运行的专属服务器(AI 新手从零起步)装好了 Ubuntu Server,下一步就是:怎么远程管理它?
想象一下:你把 Ubuntu 主机放在家里客厅的角落,7×24 小时跑着你的 AI 智能体(OpenClaw + Docker)。你在卧室用 MacBook,或者在咖啡厅用 Windows 笔记本——你怎么才能远程操作这台 Ubuntu?
答案就是 SSH。
啥是 SSH?
SSH(Secure Shell)是一个让你从一台电脑安全地连接到另一台电脑的协议。连接后,你在终端里输入命令,就像坐在那台电脑前一样。
类比:SSH = 远程控制 + 加密隧道。你的命令和数据都加密传输,黑客截获也看不懂。
没 SSH 会怎样?
| 没 SSH | 有 SSH |
|---|---|
| 想跑命令 = 必须走到Ubuntu主机面前操作 | 在卧室 / 咖啡厅 / 任何地方 ssh user@IP |
| 想改配置 = 离不开主机 | 随时远程改 |
| AI 智能体出问题了 = 必须回家 | 随时远程排查 |
玩 AI 必备 SSH——没它,你就被绑在 Ubuntu 主机旁边了。
§2 常见问题速览(5 个最重要)
如果你只有 30 秒,看这 5 个就够了。
Q1:SSH 装起来难不难?
答:不难。照着本文复制粘贴,15-30 分钟搞定。
Q2:SSH 和远程桌面有啥区别?
答:
- SSH:纯命令行,轻量级,适合通过命令管理目标主机
- 远程桌面:图形界面,重量级
玩 AI 用 SSH,不需要图形界面。
Q3:密码登录 vs 密钥登录有啥区别?
答:
| 密码登录 | 密钥登录(进阶) | |
|---|---|---|
| 认证 | 输入密码 | 用密钥文件 |
| 安全性 | 中(密码可能被猜) | 高(密钥几乎无法破解) |
| 方便性 | 每次输密码 | 一次配置,永久免密 |
| 推荐 | ✅ 先搞定这个 | 进阶再做 |
本文策略:先让密码登录成功(5 分钟),如果你想,再进阶免密登录。
Q4:Ubuntu Server 默认带 SSH 吗?
答:安装Ubuntu时要注意勾选Openssh,使用时需要确认服务在跑(§6.1)。就算没装也没关系,安装简单。
Q5:SSH 连不上咋办?
答:大概率是以下 5 个原因(详见 §8 防坑附录):
- 用户名或密码错(多)
- 改了端口
- 防火墙
- 服务端或客户端一方配置有问题
- 网不通(多,先 ping 一下目标主机看通不通)。
§3 SSH 连接的两种方式对比
SSH 有两种登录方式:
| 维度 | 密码登录 | 密钥登录(进阶) |
|---|---|---|
| 原理 | 输入用户名 + 密码 | 用密钥文件(私钥 + 公钥) |
| 操作 | ssh user@IP → 输密码 |
ssh user@IP → 直接进 |
| 安全性 | 中(密码可能被猜) | 高(密钥几乎无法破解) |
| 配置难度 | ⭐ 简单 | ⭐⭐ 一次配置永久省事 |
本文策略:
- 第一步:先让密码登录成功(§6,5 分钟,最少步骤),可以实现远程管理
- 第二步:进阶免密登录(§7,更方便)
§4 准备工作
配 SSH 前,你需要:
4.1 设备清单
| 设备 | 要求 | 备注 |
|---|---|---|
| Ubuntu 主机 | 已装好 Ubuntu Server 24.04 | 7×24 跑着 |
| 客户端电脑 | Mac 或 Windows | 你日常用的电脑 |
| 同局域网 | 两台电脑在同一个 WiFi 下 | 家庭宽带场景 |
4.2 先检查 Ubuntu 主机
在 Ubuntu 主机上运行(如果你不确定 SSH 有没有装):
# 检查 SSH 服务是否已装
dpkg -l | grep openssh-server
预期输出(如果装好了会看到 openssh-server):
ii openssh-server 1:8.9p1-3ubuntu0.x amd64 secure shell (SSH) server...
如果没装,运行:
sudo apt update && sudo apt install -y openssh-server
4.3 看 Ubuntu 主机的 IP
ip addr | grep "inet " | grep -v 127.0.0.1
预期输出:
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic enp0s3
记下这个 IP(示例
192.168.1.100),下面连接要用。
4.4 看防火墙状态
sudo ufw status
如果防火墙开启了,可能需要放行 SSH(后面 §7.4 会讲到)。
4.5 客户端工具
| 平台 | 推荐工具 | 命令 |
|---|---|---|
| Mac | 系统自带 Terminal | 终端输入 ssh |
| Windows 10+ | PowerShell / Windows Terminal | 输入 ssh |
| Windows 老系统 | PuTTY | 下载安装 |
Mac 和 Windows 10+ 都自带 OpenSSH,不用额外装。
§5 关键认知(必看)
这一节先了解 3 个"认知",免得后面操作时懵。
认知 1:SSH 是"客户端-服务端"架构
┌─────────────┐ ┌─────────────┐
│ Mac/Win │ ─── 加密隧道 ──→ │ Ubuntu │
│ (客户端) │ ←─── 结果 ──── │ (服务端) │
└─────────────┘ └─────────────┘
- 客户端:你手上用的 Mac/Windows
- 服务端:Ubuntu 主机(跑了
sshd服务) - 端口:默认 22
认知 2:默认端口是 22
SSH 默认用 22 端口。所有人都知道这个端口,所以互联网上有自动化机器人天天不停扫描。
- 开始阶段:用默认 22(简单、家庭宽带里一般安全)
- 进阶阶段:可以改成其他端口(§7.2)
认知 3:第一次连要确认"指纹"
首次连陌生服务器时,会看到:
The authenticity of host '192.168.1.100' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?
输入 yes——这是正常的,客户端会记下服务器指纹,下次就不问了。
§6 开始实操:先让密码连接方式成功
目标:5 分钟内,用密码从 Mac/Windows 成功登录 Ubuntu。 核心原则:最少步骤,先让成功。
⚠️ 标记说明:
[Ubuntu]= 在 Ubuntu 主机终端执行[Mac]= 在 Mac 终端执行[Win]= 在 Windows PowerShell 执行
§6.1 第一步:Ubuntu 主机确保 SSH 服务在跑
检查 SSH 状态
[Ubuntu]
sudo systemctl status ssh
预期输出(看到 active (running) = 成功):
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled)
Active: active (running) since Mon 2026-10-06 10:00:00 CST
如果显示
inactive,运行:
bash [Ubuntu] sudo systemctl start ssh sudo systemctl enable ssh # 开机自启
如图:
确认端口
[Ubuntu]
sudo ss -tlnp | grep ssh
预期输出:
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
看到
*:22= SSH 在 22 端口监听。
如图:
§6.2 第二步:客户端密码连接(两类常用电脑)
Mac 电脑(苹果电脑)操作方法:
打开 Mac 的终端(Terminal),输入:
[Mac]
ssh [email protected] # 注意替换:@前面的用户名和后面的内网地址为你自己的
- 把
your_username换成你在 Ubuntu 上的用户名(装系统时设的,比如dajun) - 把
192.168.1.100换成你上面查到的 Ubuntu IP
第一次连会问:
The authenticity of host '192.168.1.100' can't be established.
Are you sure you want to continue connecting (yes/no)?
输入 yes。
然后问密码:
[email protected]'s password:
输入你的 Ubuntu 用户密码(输入时不显示字符,正常)。
成功标志:看到命令行变成:
dajun@ubuntu-server:~$
✅ 看到这个 = 密码登录成功!SSH 最小目标达成!
windows 10+ 电脑操作方法:
打开 PowerShell(Win+X → 选择"Windows PowerShell"),输入:
[Win]
ssh your_username@192.168.1.100 # 注意替换:@前面的用户名和后面的内网地址为你自己的
- 同样换用户名和 IP
- 第一次连也问
yes/no,输入yes - 然后输入密码
成功标志:看到 dajun@ubuntu-server:~$
✅ Windows 密码登录也成功!
Windows (老板本)电脑操作方法:
Win 7 / Win 8 / Win 8.1 这些老系统没有自带 SSH 客户端,需要装一个第三方工具。最经典、最老牌的就是 PuTTY —— 1999 年问世,免费开源,专为 Windows 设计。
1. 下载 PuTTY
去官网 https://www.putty.org/ ,根据自己的电脑情况点选自己需要的版本。
- 64 位系统:下载
putty-64bit-XXX-installer.msi - 32 位系统:下载
putty-XXX-installer.msi
2. 安装
双击 .msi 文件,一路 "Next",默认装到 C:\Program Files\PuTTY\。
3. 打开 PuTTY,填连接信息
启动 PuTTY,主窗口里在 "Host Name (or IP address)" 输入框填 Ubuntu 的 IP:
192.168.1.100 # 注意替换内网地址为你自己的
- Port:保持默认
22 - Connection type:保持默认
SSH
💡 小提示:左边 "Saved Sessions" 输入框填个名字(比如
my-ubuntu-server),点 "Save" —— 以后双击这个名字就直接连,不用重输 IP。
4. 点 "Open"
第一次连会弹一个安全警告框(问你信不信任这台服务器):
The host key is not cached for this server.
...
Accept? (yes/no)
点 "Accept"(相当于命令行输入 yes —— 还会把这个服务器记下来,以后不再弹)。
5. 输入用户名和密码
弹出一个黑色终端窗口,先问用户名:
login as:
输入 Ubuntu 用户名(比如 dajun),回车。
接着问密码:
[email protected]'s password:
输入 Ubuntu 用户密码(输入时不显示字符,这是正常的,不是键盘坏了)。
成功标志:命令行变成:
dajun@ubuntu-server:~$
✅ 看到这个 = 老板本密码登录成功!
📌 三种方法怎么选?
| 你的电脑 | 推荐方法 |
|---|---|
| Mac(苹果电脑) | 终端 + ssh 命令 |
| Windows 10 / 11 | PowerShell + ssh 命令(系统自带) |
| Windows 7 / 8 / 8.1(老板本) | PuTTY(老系统没有自带 SSH) |
| Windows XP / 更老 | PuTTY(可能还要装额外补丁) |
§6.3 第四步:登录成功验证
登录成功后,你可以在 Ubuntu 上运行几个命令试试:
[Ubuntu]
whoami # 看当前用户
pwd # 看当前目录
hostname # 看主机名
退出登录:
[Ubuntu]
exit
看到
logout或回到本地终端 = 成功退出。
§7 进阶玩法(密钥连接方式):更好用 + 更安全
✅ §6 的密码登录已经让你能远程管理 Ubuntu 了!
下面这些是"进阶"——让你更方便、更安全。可选做,根据你自己需求。
§7.1 配置免密登录
每次输密码麻烦?配置免密登录——一次配置,永久不用输密码。
7.1.1 在客户端生成密钥对
Mac 用户:
[Mac]
ssh-keygen -t ed25519 -C "[email protected]" # 注意替换引号里的邮箱地址为你自己的邮箱地址
- 按 3 次 Enter(不设密码,直接回车)
- 密钥存到
~/.ssh/id_ed25519
Windows 用户(PowerShell):
[Win]
ssh-keygen -t ed25519 -C "[email protected]" # 注意替换引号里的邮箱地址为你自己的邮箱地址
同样按 3 次 Enter。
7.1.2 把公钥传到 Ubuntu
Mac 用户:
[Mac]
ssh-copy-id [email protected] # 注意替换:@前面的用户名和后面的内网地址为你自己的
- 输入一次密码(最后一次!)
- 完成后公钥自动复制到 Ubuntu
Windows 用户(手动复制):
[Win]
# 先看公钥内容
cat $HOME\.ssh\id_ed25519.pub
# 复制显示的一大串内容(以 ssh-ed25519 开头)
然后在 Ubuntu 上:
[Ubuntu]
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "你复制的公钥内容" > ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
7.1.3 测试免密登录
[Mac] 或 [Win]
ssh [email protected] # 注意替换:@前面的用户名和后面的内网地址为你自己的
预期:不问你密码,直接进!
✅ 免密登录成功!从此告别输密码
§7.2 修改默认端口(避开自动化攻击)
默认端口 22 天天被扫描,改成其他端口更安全。
7.2.1 改配置
[Ubuntu]
sudo nano /etc/ssh/sshd_config
找到 Port 22,改成(去掉 #,改成其他端口):
Port 2222
改成 1024-65535 之间的任意数字(避开常用端口)。示例用
2222。
保存退出:Ctrl+O,Ctrl+X。
7.2.2 重启 SSH
[Ubuntu]
sudo systemctl restart ssh
7.2.3 客户端用新端口连接
[Mac] 或 [Win]
ssh -p 2222 [email protected] # 注意替换:@前面的用户名和后面的内网地址为你自己的
✅ 新端口连接成功!
§7.3 关闭密码登录(可选)
💡 这是可选的。家里宽带没有太高安全性要求,密码登录开着也 OK。
如果你想更安全,可以关掉密码登录——只允许密钥登录。
前提:确保免密登录(§7.1)已经配置成功!
[Ubuntu]
sudo nano /etc/ssh/sshd_config
找到 PasswordAuthentication yes,改成:
PasswordAuthentication no
保存退出,重启 SSH:
[Ubuntu]
sudo systemctl restart ssh
验证:用密码登录应该被拒绝:
[Mac] 或 [Win]
ssh -p 2222 [email protected] # 注意替换:@前面的用户名和后面的内网地址为你自己的
# 预期:Permission denied (publickey)
✅ 密码登录已关闭,只有密钥能登录。
§7.4 配置防火墙(局域网限 IP)
如果想让防火墙只允许你的客户端 IP 访问 SSH:
[Ubuntu]
# 只允许你的 Mac/Windows IP 访问 SSH 端口
sudo ufw allow from 192.168.1.50 to any port 2222 proto tcp
# 如果用的是默认端口 22
sudo ufw allow from 192.168.1.50 to any port 22 proto tcp
把
192.168.1.50换成你客户端电脑的 IP。⚠️ 外网访问:如果要从家里宽带以外的地方访问(比如咖啡厅),需要端口转发或 VPN。详见 §9 FAQ 种草部分。
§7.5 客户端 SSH Config(别名简化)
每次输 ssh -p 2222 [email protected] 太麻烦?配个别名。
Mac 用户:
[Mac]
nano ~/.ssh/config
添加(记得替换你自己的用户名、端口、IP地址):
Host ubuntu
HostName 192.168.1.100
Port 2222
User your_username
IdentityFile ~/.ssh/id_ed25519
保存退出。之后只需输入:
[Mac]
ssh ubuntu
✅ 一个命令搞定连接!
Windows 用户类似,在 PowerShell 里创建 C:\Users\你的用户名\.ssh\config。
§8 防坑附录:5 个常见问题
| # | 问题 | 症状 | 原因 | 解决 |
|---|---|---|---|---|
| 1 | Connection refused | 报错 Connection refused |
SSH 没启动 / 端口错 | sudo systemctl status ssh |
| 2 | Permission denied (password) | 报错权限拒绝 | 密码错 / 用户名错 | 确认用户名和密码 |
| 3 | Connection timed out | 超时 | 防火墙挡 / IP 不对 / 不在同一网络 | ping IP 测试 + 检查网络 |
| 4 | Host key verification failed | 报错主机密钥验证失败 | 服务器重装 / IP 冲突 | 删 ~/.ssh/known_hosts 对应行 |
| 5 | 把自己锁外面 | 改完连不上 | 改错配置 / 没配密钥 | 用显示器 + 键盘物理登录修复 |
§9 常见 FAQ 汇总(10 个)
FAQ 1:SSH 是啥?和 HTTPS 啥关系?
答:SSH 是远程登录协议,HTTPS 是网页协议。两者完全不同,只是都用加密。
FAQ 2:密钥登录比密码登录安全在哪?
答:密钥 = 一长串随机字符,几乎无法暴力破解。密码可能被猜。
FAQ 3:ed25519 和 RSA 选哪个?
答:ed25519(更快、更短、更安全)。RSA 是旧标准。
FAQ 4:私钥丢了咋办?
答:在服务器删掉对应公钥,重新生成一对密钥。
FAQ 5:多台电脑怎么共享登录?
答:每台电脑生成自己的密钥,把公钥都传到服务器(不要共享私钥)。
FAQ 6:SSH 连接慢怎么办?
答:在 Ubuntu 上改 /etc/ssh/sshd_config,加:
UseDNS no
GSSAPIAuthentication no
然后 sudo systemctl restart ssh。
FAQ 7:怎么传文件?
答:
# 传文件到服务器
scp -P 2222 本地文件.txt [email protected]:~/ # 注意替换:@前面的用户名和后面的内网地址为你自己的
# 从服务器拉文件
scp -P 2222 [email protected]:~/文件.txt ./ # 注意替换:@前面的用户名和后面的内网地址为你自己的
FAQ 8:怎么看谁登录过?
答:
[Ubuntu]
sudo last | grep still
sudo tail -f /var/log/auth.log | grep sshd
FAQ 9:外网怎么访问家里 Ubuntu?
答:种草——这需要端口转发或 VPN。详见博客其他文章:
- 如果你有公网 IP(除非你申请过,要么现在的一般家庭宽带都不是公网IP),可以配端口转发(路由器设置)
- 更安全的方法是搭 WireGuard VPN,连上 VPN 后就像在局域网里一样访问
- 后续会出专题博文详细讲,记得关注!
FAQ 10:怎么防暴力破解?
答:种草——可以用 fail2ban 自动封掉尝试破解的 IP。后续会出专题博文,记得关注!
写在最后
SSH 是你远程管理 Ubuntu 的"远程钥匙"——配好它,你就可以在任何地方管理你的 AI 智能体服务器。
你刚刚做的事:
- ✅ Ubuntu 主机确保 SSH 服务在跑
- ✅ Mac/Windows 客户端密码登录成功(最小目标达成)
- ✅(可选)免密登录配置
- ✅(可选)改端口、关密码、防火墙
接下来你可以:
- 试试 VS Code 远程开发(用 SSH 连接,在 VS Code 里直接编辑 Ubuntu 文件)
- 深入学习 WireGuard VPN(外网安全访问家里主机)
- 关注博客后续 fail2ban 防破解 专题
最后验证:2026-10-06 / OpenSSH 8.9p1 / Ubuntu 24.04.1 LTS
关于作者
大军,50 岁,前银行从业者,现在自由人。正在持续构建、升级个人技术博客 dajun-ai.com,记录一个爱好计算机和 AI 技术的普通人如何用 AI 丰富人生下半场。