使用 SSH 远控局域网中的其他电脑
前言
在机器人调试、ROS 开发、服务器维护或多台 Ubuntu 电脑协同时,经常需要从一台电脑登录另一台电脑执行命令。
SSH(Secure Shell)可以让我们通过网络安全地登录远程终端。只要两台电脑在同一个局域网,并且被控电脑开启了 SSH 服务,就可以在本机终端中远程操作它。
一、准备
本文约定:
1 | 电脑 A:控制端,当前操作的电脑 |
使用 SSH 前需要确认:
- 两台电脑在同一个局域网内。
- 电脑 B 已安装并启动 SSH 服务。
- 电脑 A 能访问电脑 B 的 IP 地址。
- 已知道电脑 B 的用户名和登录密码。
在电脑 B 上查看用户名:
1 | whoami |
查看局域网 IP:
1 | hostname -I |
输出中类似 192.168.1.23、192.168.31.88、10.0.0.15 的地址,一般就是局域网 IP。
二、安装并启动 SSH 服务
以下命令在电脑 B 上执行。
安装 openssh-server:
1 | sudo apt update |
启动 SSH 服务,并设置开机自启:
1 | sudo systemctl enable --now ssh |
查看服务状态:
1 | systemctl status ssh |
如果看到 active (running),说明 SSH 服务已经正常运行。
少数系统的服务名可能是 sshd,如果 ssh 不生效,可以尝试:
1 | systemctl status sshd |
三、远程登录
假设电脑 B 的信息如下:
1 | 用户名:dreamer |
在电脑 A 上登录电脑 B:
1 | ssh dreamer@192.168.1.23 |
第一次连接时,终端会询问是否继续连接,输入 yes 后回车,再输入电脑 B 的用户密码即可。
登录成功后,当前终端执行的命令都运行在电脑 B 上。可以用下面的命令确认当前主机名:
1 | hostname |
退出远程登录:
1 | exit |
四、测试网络连通性
如果 SSH 连接不上,先在电脑 A 上测试能否访问电脑 B:
1 | ping 192.168.1.23 |
如果能持续收到回复,说明两台电脑网络基本连通。
如果没有回复,优先检查:
- 两台电脑是否在同一个局域网。
- IP 地址是否写错。
- 电脑 B 是否连接到了正确的 WiFi 或网口。
- 网线、交换机、路由器是否正常。
- 是否有多个网卡,导致看错了 IP。
五、常用优化
设置固定 IP
如果电脑 B 使用 DHCP 自动获取 IP,重启或换网络后 IP 可能变化。建议给电脑 B 设置固定 IP,后续连接会更方便。
推荐在路由器后台设置:
1 | DHCP 静态分配 / 地址保留 / IP-MAC 绑定 |
把电脑 B 的 MAC 地址绑定到固定 IP。这样不用修改系统网络配置,也不容易把网络改乱。
如果需要在 Ubuntu 桌面版中手动设置,可以进入:
1 | 设置 -> 网络 -> 有线/无线 -> IPv4 -> 手动 |
示例:
1 | 地址:192.168.1.23 |
注意:固定 IP 不能和局域网内其他设备重复,否则会产生 IP 冲突。
配置免密登录
每次登录都输入密码比较麻烦,可以在电脑 A 上配置 SSH 密钥。
生成密钥:
1 | ssh-keygen -t ed25519 |
一路回车即可。默认会生成:
1 | ~/.ssh/id_ed25519 |
把公钥复制到电脑 B:
1 | ssh-copy-id dreamer@192.168.1.23 |
之后再次登录:
1 | ssh dreamer@192.168.1.23 |
如果配置成功,就不需要再输入密码。
设置主机别名
IP 地址不好记,可以在电脑 A 上编辑 SSH 配置文件:
1 | nano ~/.ssh/config |
添加:
1 | Host robot |
以后可以直接登录:
1 | ssh robot |
六、传输文件
SSH 也可以配合 scp 在两台电脑之间传文件。
从电脑 A 复制文件到电脑 B:
1 | scp local_file.txt dreamer@192.168.1.23:~/ |
从电脑 B 复制文件到电脑 A:
1 | scp dreamer@192.168.1.23:~/remote_file.txt ./ |
复制整个文件夹:
1 | scp -r my_folder dreamer@192.168.1.23:~/ |
如果已经设置别名,可以写得更简单:
1 | scp -r my_folder robot:~/ |
七、常见问题
| 报错 | 常见原因 | 处理方法 |
|---|---|---|
Connection refused |
网络能找到电脑 B,但 SSH 服务未启动或 22 端口未开放 | 在电脑 B 上执行 sudo systemctl status ssh,必要时执行 sudo systemctl start ssh |
No route to host |
网络不通,或 IP 地址写错 | 在电脑 A 上执行 ping 192.168.1.23,检查网络和 IP |
Permission denied |
用户名、密码或密钥不正确 | 在电脑 B 上用 whoami 确认用户名,再用 ssh 用户名@IP地址 登录 |
REMOTE HOST IDENTIFICATION HAS CHANGED |
电脑 B 重装系统或主机指纹变化 | 在电脑 A 上执行 ssh-keygen -R 192.168.1.23 后重新连接 |
八、安全建议
- 不要使用过于简单的系统密码。
- 优先使用 SSH 密钥登录。
- 不需要远程控制时,可以关闭 SSH 服务。
- 不要随便把 SSH 端口暴露到公网。
- 如果必须公网访问,建议先用 VPN、Tailscale、ZeroTier 等方式组网,再使用 SSH 登录。
关闭 SSH 服务:
1 | sudo systemctl stop ssh |
禁止开机自启:
1 | sudo systemctl disable ssh |
总结
局域网中使用 SSH 远控电脑的核心流程:
- 在被控电脑上安装并启动
openssh-server。 - 查看被控电脑的用户名和局域网 IP。
- 在控制端使用
ssh 用户名@IP地址登录。 - 按需配置固定 IP、免密登录和主机别名。
- 使用
scp在两台电脑之间传输文件。
配置完成后,远程调试机器人、编译代码、查看 ROS 节点或启动程序都会方便很多。




