一句话先说明要解决什么问题

为了让 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 # 开机自启

如图:solve-ssh-server-status 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 端口监听。

如图:solve-ssh-server-port SSH服务端口


§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 丰富人生下半场。