Ubuntu默认不开启SSH服务,远程连接前必须手动安装openssh-server、启动sshd并启用开机自启,否则报“Connection refused”;还需用ufw放行22端口并确认IP地址有效。

Ubuntu默认不开启SSH服务,远程连接前必须手动安装并启用sshd,否则ssh命令会报“Connection refused”错误——这不是网络问题,而是服务根本没跑。
安装openssh-server并确认服务状态
只装openssh-client(自带)没用,必须装服务器端组件。执行:
sudo apt update sudo apt install openssh-server -y
安装后sshd通常自动启动,但得验证:
-
sudo systemctl status ssh—— 看输出里是否有active (running) - 若显示
inactive (dead),运行sudo systemctl start ssh - 确保开机自启:
sudo systemctl enable ssh
注意:service ssh restart在较新Ubuntu(22.04+)中虽能用,但推荐统一用systemctl命令,避免因init系统差异导致行为不一致。
查IP地址时别用ifconfig
ifconfig已弃用,且在最小化安装的Ubuntu Server中可能未预装。直接用:
ip a
找标记为UP的以太网接口(如enp0s3或ens33),其inet行后的IPv4地址(如192.168.1.100/24)才是可用内网IP。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 别选
lo(回环地址127.0.0.1),它只能本机访问 - 如果输出里只有
inet6(IPv6),说明DHCP没拿到IPv4——检查物理网线、路由器DHCP是否开启,或手动配静态IP -
hostname -I可快速打印所有IPv4,但不显示接口名,排查多网卡时不够直观
防火墙必须放行22端口
即使sshd在跑、IP也对,UFW(Ubuntu默认防火墙)默认会拦截所有入站连接。运行:
sudo ufw status verbose
若看到Status: active但没有22/tcp规则,立刻加:
sudo ufw allow 22
常见坑:
- 执行
sudo ufw allow ssh等价,但依赖UFW内置配置;若误删了/etc/ufw/applications.d/openssh-server,该命令会失效,直接写端口号更可靠 - 改过SSH端口(比如改成
2222)?那必须sudo ufw allow 2222/tcp,且要同步改/etc/ssh/sshd_config里的Port字段 - 用
sudo ufw disable临时关防火墙测试可以,但生产环境绝不能长期关闭
root远程登录需显式放开且风险极高
Ubuntu默认禁用root的SSH密码登录。如真需要(例如嵌入式调试场景),必须两步:
- 编辑
/etc/ssh/sshd_config,找到PermitRootLogin行,改为PermitRootLogin yes(不是without-password) - 重启服务:
sudo systemctl restart ssh
但这样做等于把最高权限暴露在网络里。更安全的做法是:
- 用普通用户登录后,再
sudo -i切root - 或配置密钥登录+
sudoers免密提权,彻底规避密码传输
最后提醒:家庭宽带大多分配动态公网IP,想从外网直连,得配DDNS+路由器端口转发——但这和SSH配置本身无关,属于网络层额外工作,容易被当成SSH问题反复折腾。

















