搞Linux服务器这几年,身边不少朋友让我推荐一套最省心的远程访问方案。试过各种组合之后,我还是最常用 Ubuntu 18.04 配 MobaXterm 这套搭配。Ubuntu 18.04 虽然是上一代 LTS 版本,但稳定性和兼容性真不是盖的,特别是跑一些老项目或者特定环境的编译任务,对比新版本反而少很多折腾;MobaXterm 则是 Windows 下少见的“开箱即用”终端,内置 SSH、SFTP、X11 转发这些功能,不用像 PuTTY 那样还得额外装一套文件传输工具。这套组合特别适合刚接触 Linux 的开发者、实验室里维护工作站的在校学生,以及需要远程调试嵌入式设备的硬件工程师。这篇文章我把从装机开始到远程访问的完整链路都捋一遍,每一步都写下踩过的坑和验证过的做法,照着做基本能一次跑通。
1. 方案选型与整体思路拆解
1.1 为什么是 Ubuntu 18.04 而不是新版本
先聊聊版本选型这件事。很多人一上来就问“为什么不直接装 20.04 或 22.04”,这个问题很好回答:如果你的目标是“稳定跑起来、少踩坑”,老牌 LTS 版本反而更可靠。18.04 于 2018 年发布,官方支持到 2023 年,但国内很多镜像源和企业内网仍然保留着完整的软件仓库,更重要的是大量的工业软件、ROS 机器人开发套件、嵌入式交叉编译工具链,当年就是针对 18.04 做的适配和测试。我实际遇到过某款激光雷达的 SDK 在新版本 Ubuntu 上编译直接报错,但 18.04 上一条命令就能过。如果你只是学习 Linux 基础操作,新版本当然也没问题,但做开发、跑项目、维护旧系统,18.04 是最稳妥的选择。
还有一点是资源占用。18.04 的默认桌面环境是 GNOME 3.28,内存占用比新版本低不少,我手上一台只有 4GB 内存的老旧笔记本,跑 18.04 桌面再开几个终端和浏览器,依然流畅。相比之下,22.04 的 GNOME 40+ 对显卡和内存的要求明显更高。远程访问的场景下,服务器端资源越省越好,因为很多计算资源要留给实际任务。
1.2 为什么 Windows 侧选择 MobaXterm
Windows 下能用的 SSH 客户端不少:PuTTY、Xshell、Windows Terminal 自带 SSH。但 PuTTY 只解决“能连上”的问题,文件传输还得搭配 WinSCP,两台软件来回切换,效率很低。Xshell 确实好用,但个人版有各种限制。Windows Terminal 的 SSH 虽然原生,但缺少会话管理、端口转发配置界面、SFTP 文件浏览这些“顺手”的功能。
MobaXterm 把这些问题一次性解决了。它是一个集成的终端模拟器,自带 SSH 客户端、SFTP 文件管理器、X11 图形转发、端口转发、宏录制、密码管理等功能。打开 MobaXterm 就能在左侧看到连接树,右边是终端窗口,下边还挂着 SFTP 的文件浏览器,连上服务器之后可以直接拖拽文件,这体验比任何组合方案都顺畅。它的 X11 转发功能也特别实用——远程跑一个有图形界面的程序,比如 ROS 的 rviz、MATLAB,可以直接弹出窗口显示在 Windows 桌面上,不用装 VNC 这类重型方案。
1.3 整体架构与数据流
这套方案的整体架构很简单:一台装有 Ubuntu 18.04 的机器(可以是物理机、虚拟机或者云服务器),开启 SSH 服务端;一台 Windows 电脑安装 MobaXterm,通过网络连接到 Ubuntu 的 SSH 端口(默认 22)。连接建立之后,所有操作通过 SSH 协议加密传输,包括命令输入、文件传输、图形界面数据转发。
网络环境决定了你需要做哪些额外配置。如果两台机器在同一个局域网,直接使用内网 IP 连接即可;如果跨网络或者 Ubuntu 机器在防火墙后面,就需要配置端口转发或者内网穿透。这篇文章的重点放在局域网内的直连场景,这也是绝大多数入门用户的实际环境,但会在后面补充公网访问的思路。
2. Ubuntu 18.04 系统安装与基础配置
2.1 制作启动盘与安装流程
安装 Ubuntu 18.04 需要的材料:一个至少 4GB 的 U 盘、Ubuntu 18.04 镜像文件、写盘工具。镜像建议从官方源或国内高校镜像站下载,文件名类似“ubuntu-18.04.6-desktop-amd64.iso”。写盘工具推荐 Rufus,轻量、速度快、兼容性好。
Rufus 的使用其实非常直接:插入 U 盘,打开 Rufus,设备选择 U 盘,引导类型选择下载好的 ISO 镜像,分区类型如果目标机器是 UEFI 启动就选 GPT,传统 BIOS 就选 MBR。点击开始之后,Rufus 会提示写入模式,选择“以 ISO 镜像模式写入”即可。写入完成后 U 盘就是启动盘了。
安装过程有几个需要留意的环节。首先是启动菜单,开机时按 F2、F10、F12 或 Del 进入 BIOS 设置,把 U 盘设为首选启动项。不同品牌的主板按键不一样,建议安装前先查清楚。其次是安装类型,如果整块硬盘都用来装 Ubuntu,直接选“清除整个磁盘并安装 Ubuntu”,如果想保留 Windows 双系统,选“其他选项”手动分区,这需要一定的分区知识,新手建议先单系统。分区方案方面,如果机器内存小于 8GB,建议划分一个 swap 分区,大小跟内存一致;内存充足的话可以不建交换分区,或者只建 2GB 用作休眠备用。
注意:如果安装过程中遇到“黑屏”或者光标闪烁不动,多半是显卡驱动兼容性问题。可以在“安装 Ubuntu”界面按 E 进入 GRUB 编辑模式,在
linux开头的行尾加上nomodeset参数,再按 F10 启动,通常就能正常进入图形化安装界面。
2.2 安装完成后的第一件事:换软件源与系统更新
Ubuntu 18.04 安装完成后,默认的软件源是 Ubuntu 官方源,在国内的下载速度很不稳定。第一件事就是把源切换到国内镜像站。操作方式是修改/etc/apt/sources.list文件,打开终端执行:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list这里以阿里云镜像源为例,其他镜像站的地址也差不多,比如清华的mirrors.tuna.tsinghua.edu.cn。替换完成后执行更新:
sudo apt update sudo apt upgrade -yapt update 是刷新软件包索引,apt upgrade 是升级所有可升级的软件包。首次升级的耗时取决于网络状况,可能几分钟到几十分钟不等,耐心等它跑完就行。建议再安装一些基础工具,比如后续 SSH 调试可能会用到的 net-tools(提供 ifconfig 命令)、vim(文本编辑器):
sudo apt install -y net-tools vim curl wget2.3 设置静态 IP 便于稳定连接
DHCP 分配的 IP 有时候会变化,这对远程访问来说是件麻烦事——你昨天用 192.168.1.100 连得好好的,今天重启路由器,它变成了 192.168.1.102,MobaXterm 的连接配置就失效了。所以在配置 SSH 之前,先把 IP 固定下来。
Ubuntu 18.04 的网络配置和之前版本不一样,它不是直接改/etc/network/interfaces,而是通过 Netplan 来管理。配置文件在/etc/netplan/目录下,通常是一个.yaml文件,比如01-netcfg.yaml或50-cloud-init.yaml。
先查看当前网卡名称和网络信息:
ip addr ip route记录下网卡名称(通常是 enp3s0、ens33 之类的名称)、当前 IP、网关地址和 DNS。然后修改 Netplan 配置文件:
sudo vim /etc/netplan/01-netcfg.yaml内容参考如下:
network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: no addresses: - 192.168.1.100/24 gateway4: 192.168.1.1 nameservers: addresses: - 223.5.5.5 - 114.114.114.114addresses是你想固定的 IP 地址,/24是子网掩码的简写,对应 255.255.255.0,gateway4是路由器地址,nameservers是 DNS 服务器,我这里用了国内的公共 DNS。配置完成后应用:
sudo netplan apply再执行ip addr确认 IP 已经变成你设置的静态地址。如果网络连接丢失了,在本地键盘上重新执行sudo netplan apply即可恢复。这里是远程访问的基础,务必确认 IP 固定成功后再进行后续步骤。
3. SSH 服务端安装与安全配置
3.1 安装 openssh-server
Ubuntu 18.04 默认是不安装 SSH 服务端的,需要手动安装。终端执行:
sudo apt install -y openssh-server安装完成后,服务通常会自动启动。检查服务状态:
sudo systemctl status ssh如果状态显示active (running),说明 SSH 服务正在运行。如果没有运行,用下面命令启动并设置开机自启:
sudo systemctl start ssh sudo systemctl enable sshssh 服务监听的端口默认是 22。确认端口在监听:
sudo netstat -tlnp | grep 22看到类似tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN的输出,说明一切正常。
提示:如果你用的是 Ubuntu 的云镜像或者安装了云初始化工具,SSH 服务可能已经预装并运行了。但桌面版安装后还是建议手动确认一下,不少用户在这上面栽过跟头——以为服务已经开了,结果远程连半天连不上。
3.2 SSH 服务的安全配置建议
直接暴露在公网上的 SSH 服务,每天会收到无数次暴力破解尝试。即使只在局域网使用,我也建议把安全配置做好,防患于未然。
SSH 的配置文件在/etc/ssh/sshd_config,修改前先备份:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak sudo vim /etc/ssh/sshd_config有几个关键项建议修改:
# 禁止 root 用户远程登录,这个很重要 PermitRootLogin no # 使用密钥登录,这个在后面会配置 PubkeyAuthentication yes # 密码登录保留开启,配置好密钥后再关闭 PasswordAuthentication yes # 修改 SSH 端口,降低被扫描的概率 Port 2222修改端口后需要重启 SSH 服务:
sudo systemctl restart ssh之后连接时就需要指定新端口,比如 MobaXterm 的端口栏填 2222。如果你不确定要不要改端口,我建议先在日常使用的局域网环境维持默认 22 端口,方便排查问题,等熟悉了整个流程后再考虑加固。
3.3 配置 SSH 密钥登录实现免密访问
每次用密码登录虽然不麻烦,但总归多了一步输入操作。SSH 密钥登录可以做到免密访问,而且安全性更高。密钥对分为私钥和公钥,私钥保存在 Windows 本地,公钥放在 Ubuntu 服务器上。
密钥生成有两种方式:一种是在 Windows 用 MobaXterm 自带的工具生成,另一种是在 Ubuntu 上生成再导入。我更推荐前者,因为私钥直接生成在本地,免去了传输私钥的风险。
MobaXterm 生成密钥的方法:打开 MobaXterm,点击菜单栏的“Tools”→“MobaKeyGen”,点击“Generate”按钮,鼠标在空白区域晃动几下增加随机性,然后点击“Save private key”保存私钥,复制公钥内容。
然后在 Ubuntu 服务器上,把公钥添加到授权列表:
mkdir -p ~/.ssh chmod 700 ~/.ssh echo "你的公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys权限设置非常关键。~/.ssh目录权限是 700(只有 owner 可读写执行),authorized_keys文件权限是 600(只有 owner 可读写)。权限过松会导致 SSH 拒绝使用密钥文件。
在 MobaXterm 会话中,点击“Advanced SSH settings”,勾选“Use private key”,选择刚才保存的私钥文件,再连接时就不需要输入密码了。如果之前密码登录还开着,密钥认证会优先尝试,失败后才回落到密码认证。
4. MobaXterm 连接配置与核心功能实操
4.1 新建会话与基础连接参数
MobaXterm 主界面左上角点击“Session”,弹出会话配置窗口。选择 SSH 协议,右侧填写远程主机信息:
- Remote host:Ubuntu 的 IP 地址,比如 192.168.1.100
- Specify username:Ubuntu 的用户名
- Port:SSH 端口,默认 22,如果上面改了就用新端口
- 如果配置了密钥,在 “Advanced SSH settings” 里指定私钥文件
填好之后点击 OK,连接树里就多了一个会话。双击会话即可连接。第一次连接会弹出确认主机指纹的提示,选择“Accept”接受即可。
一个很实用的小技巧:在会话名称上右键 → Edit session,可以修改任何参数。我习惯给会话加上备注,比如“Ubuntu 工作站(编译服务器)”,时间和语义都一目了然。如果你管理的服务器比较多,建议使用 MobaXterm 的文件夹分组功能,把不同项目的服务器归类整理。
4.2 终端操作与右键实用功能
连接成功后进入终端界面,本质上就是一个完整的终端模拟器,支持复制粘贴、快捷键、多标签页。有几个操作细节值得注意:
复制粘贴:默认情况下,选中即复制,右键即粘贴。这个行为习惯在 Windows 下非常顺手,不需要按 Ctrl+C/Ctrl+V。如果行为和预期不符,可以在 Settings → Terminal 里调整。
多标签页:双击终端窗口顶部空白处可以新建一个终端标签,同时连接多台服务器时切换非常方便。每个标签页是独立的会话,互不干扰。
终端分屏:点击工具栏的分屏按钮,或者用快捷键 Ctrl+Alt+数字键(我常用的是 Ctrl+Alt+1 表示 2 分屏,Ctrl+Alt+2 表示 3 分屏),可以在一个窗口里同时查看多台服务器的输出。这个功能在做日志对比、同布操作多台机器时极为好用。
另外,终端背景颜色和字体大小也可以按个人偏好设置。我习惯把字体调大一点,背景调成淡绿色,长时间盯着不累眼。
4.3 SFTP 文件管理实现拖拽传输
MobaXterm 连接成功后,左边会自动出现一个 SFTP 文件浏览器面板,显示的是服务器上的文件系统。你可以直接在面板里浏览服务器目录、上传下载文件,也可以通过拖拽的方式在 Windows 和 Ubuntu 之间传输文件——从 Windows 桌面拖一个文件到 SFTP 面板的目录里,上传就开始了;把服务器上的文件拖到 Windows 桌面,下载就完成了。
这个功能替代了 WinSCP 和 FileZilla 的角色。实际体验下来,拖拽传输的效率和专用 FTP 客户端差不多,而且文件不经过中转,直接走 SSH 加密通道,安全性更好。
需要注意的权限问题:SFTP 面板默认以当前登录用户的权限操作。如果你想修改系统目录(比如/etc、/usr/local)下的文件,直接拖拽会提示权限不足。解决办法是使用sudo权限的账户,或者在终端里先用sudo chown调整文件归属。我不太建议用 root 账户直接登录,风险太大,正确姿势是普通用户操作 + sudo 提权。
我在用 SFTP 面板时也遇到过一次比较沮丧的情况——往服务器传一个 5GB 的数据库备份文件,传了几个小时后中途断开,大小写文件名也发生过混乱。后来发现 MobaXterm 的传输是单线程的,大文件建议在终端里用 rsync 或者 scp 命令来传,能断点续传而且更快。小文件拖拽没问题,大文件走命令行是血的教训。
4.4 X11 转发运行远程图形界面程序
这是 MobaXterm 相对其他 SSH 客户端最大的杀手锏。默认情况下,MobaXterm 已经开启了 X11 转发功能,你不需要做任何额外配置。
在终端里直接运行一个带图形界面的程序试试:
gedit &你会发现编辑器界面直接在 Windows 桌面上弹出来了,这就是 X11 转发在工作。原理是:SSH 连接建立时,服务器端把图形程序的显示请求转发到客户端,由客户端执行本地渲染,再通过网络把画面回传。MobaXterm 内置了一个 X server,所以无需在 Windows 上另装 X 组件。
我经常用这个功能远程启动一些 Linux 专用的图形工具,比如:
# ROS 可视化 rviz # 远程启动 MATLAB matlab # 系统日志查看器 gnome-system-logX11 转发对网络带宽有一定要求,局域网内使用非常流畅,跨公网用会有明显的延迟感。如果需要长期使用图形界面程序,建议改用 VNC 或 X2Go 方案。
4.5 SSH 隧道和端口转发
端口转发是另外一个非常好用的功能,利用 MobaXterm 的隧道机制,可以在不额外开放防火墙端口的情况下,访问远程服务器上的一些 Web 服务。
比如 Ubuntu 上跑了一个 Jupyter Notebook,默认监听 8888 端口,但该端口没有对公网开放。在 MobaXterm 中新建一个 SSH 隧道(Tools → Network Port Forwarding):
- 类型选择 Local(本地转发)
- 监听端口填 8888(Windows 本地的)
- 目标地址填 127.0.0.1,目标端口填 8888(服务器上的)
保存之后,在 Windows 浏览器打开http://127.0.0.1:8888,流量会通过 SSH 隧道加密传输到服务器上,看不到端口暴露,安全性也更好。这个功能在调试 Web 应用、访问内部管理界面时非常实用,省去在防火墙上单独开端口的麻烦。
5. 网络配置排查与远程连接问题解决
5.1 最常见的连接失败原因清单
远程连接不上,原因千奇百怪,但绝大多数集中在下面几个点上。我整理了一个排查顺序,按这个顺序检查通常能在几分钟内定位问题。
| 排查点 | 操作方法 | 常见问题 |
|---|---|---|
| 服务器 IP 是否可达 | 在 Windows 上执行ping 192.168.1.100 | 请求超时说明网络不通,检查网线/Wi-Fi/路由器 |
| SSH 端口是否开放 | 在 Windows 上执行telnet 192.168.1.100 22 | 端口不通说明防火墙阻断了连接 |
| SSH 服务是否运行 | 在服务器上执行sudo systemctl status ssh | 服务未启动或崩溃,重启服务 |
| 用户名密码是否正确 | 确认登录用户名和密码 | 注意用户是否存在、密码策略 |
| 密钥权限是否正确 | 检查 authorized_keys 权限 | 权限过宽会拒绝连接 |
telnet命令在 Windows 10/11 上默认可能未安装,可以在“启用或关闭 Windows 功能”里开启 Telnet 客户端,或者用 MobaXterm 自带的网络工具——打开 Tools → Network tools → Tcp port scan,输入 IP 和端口扫描一下,效果一样。
5.2 局域网连不上,三种典型场景还原
场景一:ping 不通 IP。
这种情况绝大多数是网络配置问题。首先确认 Ubuntu 机器的网络有没有连上,执行ip addr看网卡有没有获取 IP。如果用的是 Wi-Fi 连接,SSH 服务默认监听所有接口,通常不会有问题。还要看看 Ubuntu 的防火墙 UFW 是否开启了,执行:
sudo ufw status如果返回active,说明防火墙确实开启了。允许 SSH 端口通过:
sudo ufw allow 22/tcp sudo ufw allow 2222/tcp # 如果改了 ssh 端口这时候 Windows 再 ping 应该就通了。
场景二:ping 得通,但 SSH 连接超时。
ping 通说明网络层没问题,连接超时大概率是 SSH 服务没起来或者被防火墙拦截。在 Ubuntu 本地执行sudo netstat -tlnp | grep ssh,看端口是否监听。如果监听在 127.0.0.1 上而不是 0.0.0.0,说明 sshd 只监听了本机回环地址,检查/etc/ssh/sshd_config里有没有ListenAddress配置项,注释掉或改为0.0.0.0即可。
场景三:能连上,但登录后很快断开。
这种问题通常是 PAM 模块或者 SSH 会话超时导致的。查看 MobaXterm 的日志输出,如果提示Connection reset by peer,先检查服务器的资源情况,执行df -h看磁盘是否满了,free -m看内存是否耗尽。系统资源耗尽会导致 SSH 进程崩溃。如果是长时间空闲被踢出,在sshd_config里设置:
ClientAliveInterval 60 ClientAliveCountMax 3这样每 60 秒发送一次心跳包,维持连接不被中断。
5.3 跨网段与公网访问的思路
局域网是基本功,但很多时候需要在不同网络下访问服务器,比如从办公室远程家里面的机器。这里有几种思路,按成本和安全性排序:
首选方案是使用 SSH 密钥登录,然后通过路由器端口映射,把 Ubuntu 的 22 端口映射到公网 IP。这样做的风险很大,公网扫描器对 22 端口的暴力尝试非常频繁,强烈建议配合密钥认证使用,关闭密码登录,或者干脆把端口改成不常用的高位端口。
进阶方案是部署 frp 或者 ZeroTier 这类内网穿透工具,把 SSH 服务暴露到一个中转节点上,或者直接组一个虚拟局域网。这个方案的好处是无需在路由器上开放端口,安全性提升明显,但需要一台有公网 IP 的中转服务器(云主机即可),或者两端都安装 ZeroTier 客户端。
我在远程管理家里的服务器时,用的是 ZeroTier 组网方案。两台机器分别安装客户端,加入同一个虚拟网络,分配虚拟 IP,然后 SSH 就直接连虚拟 IP。这个方法绕开了端口映射和防火墙的麻烦,而且加密是端到端的,比裸暴露公网安全得多。不过这篇文章不展开讲组网细节,等有机会单独写一篇。
5.4 遇到连接卡顿如何定位
连接上之后操作卡顿,首先要判断是网络问题还是服务器负载问题。在 MobaXterm 终端里执行top或htop,看 CPU 和内存使用率。如果服务器负载很低但操作依然卡,多半是网络传输延迟或 MTU 设置问题。
Wi-Fi 环境下 SSH 操作延迟高的一个隐藏原因是无线信号质量差。可以检查一下信号强度,或者干脆用网线连接,实测下来延迟能降低一大截。另外,MobaXterm 可以开启 SSH 压缩来降低传输数据量,在会话设置的“Advanced SSH settings”里勾选“Compression”,对慢网络环境有改善。
6. 日常使用技巧与维护备忘
6.1 MobaXterm 的宏与命令面板
重复操作太多时,用 MobaXterm 的宏功能可以批量自动化。在 Tools → Macros → Record a macro 中录制操作序列。比如我每次连接服务器后都要执行ssh-add、sudo systemctl status ssh、df -h这三条命令,把记录保存成一个可重复执行的宏,一键运行,省去重复输入。
另一个很实用的是“Customized commands”功能,把常用的远端命令做成按钮放在顶部工具栏。在 Settings → Customized commands 里添加命令,比如apt update && apt upgrade -y、reboot这类操作,点了就直接执行,避免了每次手输的麻烦和可能出现的输错风险。
6.2 服务器侧的 SSH 维护建议
SSH 服务用了几年之后,偶尔会遇到连接卡在登录阶段的怪问题。我习惯定期检查和维护服务器侧的 SSH 配置:
定期备份 sshd_config 和 authorized_keys 到安全地方,防止误操作改坏配置。用下面命令检查配置语法:
sudo sshd -t如果返回没有任何错误,说明配置没语法问题。改配置后重启服务时,一个有用的做法是先开一个新的连接窗口再做重启——万一新配置有问题,旧的连接还能保留,可以紧急回滚。
日志是排查问题的第一现场。SSH 相关的日志分布在两个地方:/var/log/auth.log(认证日志)和/var/log/syslog(系统日志)。连接失败时,执行:
sudo tail -f /var/log/auth.log然后再次尝试连接,可以看到具体的失败原因,比如密码错误、公钥不匹配、IP 被拒绝等。日志信息远比猜测可靠。
6.3 系统宕机后的本地恢复准备
远程访问最大的风险是:如果服务器宕机或者 SSH 配置出错,你可能会被挡在门外。你如果只有远程访问通道,没有本地访问手段,这是很被动的。所以,我强烈建议在所有远程操作之前,确认自己有某种形式的本地访问能力:
如果是物理机,确认显示器、键盘都能正常使用;如果是云服务器,确认云控制台的 VNC 功能可用。一旦远程断了,还能通过本地方式登录系统排查。这个习惯帮我成功避免了至少三次远程误操作导致的“失联”危机,每次恢复之后都庆幸自己提前做了准备。
另外,把恢复操作步骤打印一份放在旁边,或者存一份在手机备忘录里。比如“如何在 GRUB 里进入单用户模式重置密码”“如何修改 sshd_config 恢复 SSH 服务”这类应急手册。关键时刻照着做,比临时搜索好太多。
6.4 服务器安全加固的例行清单
最后提醒安全这块。远程访问一旦暴露到公网,风险就直接拉满。我自己的服务器定期做下面几件事:
首先关闭密码登录,只留密钥认证。修改/etc/ssh/sshd_config里的PasswordAuthentication no,然后重启 ssh 服务。这个改动能让 99% 的暴力破解失效,因为对方连密码输入的机会都没有。
其次,可以给 SSH 设置登录通知,在/etc/ssh/sshd_config末尾添加:
ForceCommand 该User登录时执行通知脚本约束更细的用法是配合 PAM 或者自定义脚本来做二次登录提醒。最简单的做法:登录时用pam_exec调一个外部脚本,把登录时间、IP 等信息通过邮件或 webhook 推给你自己。效果非常直观,每次有陌生人摸到你的服务器,你第一时间就知道了。
然后定期更新系统补丁,这是最基础且常常被忽略的工作:
sudo apt update sudo apt upgrade -y最后梳理一下账户权限,删除长时间不用的账号,检查/etc/sudoers里是否有异常提权规则。安全加固是无止境的,但对个人和小团队来说,做好上面几步,日常威胁已经能挡住九成以上。
这套 Ubuntu 18.04 + MobaXterm 的搭配,我自己用了三年多,从最初的实验室工作站到后来的远程编译服务器,一直很稳定。中间踩过的坑基本上都在上面列出来了,现在回想起来,绝大多数问题都出在网络配置和服务状态检查上,真正的 SSH 协议本身很少掉链子。如果你刚开始搭建远程环境,就按文章的顺序一步步来:装系统、配静态 IP、开 SSH、MobaXterm 连接、安全加固。这五个环节走完,一套可靠、顺手、安全的远程开发环境就立起来了。至于更进阶的容器化部署、SSH 跳板机、自动化运维编排,等你的第一步落地之后再说。