openssh-server 默认不启用远程登录,得手动装、配、启三步走,缺一不可。
确认是否已安装 openssh-server
别猜,直接查:
运行 sudo systemctl status ssh。如果提示 Unit ssh.service could not be found,说明根本没装;如果显示 inactive (dead) 或 failed,说明装了但没跑起来。
常见误判点:用 ssh localhost 测试失败 ≠ 没装,可能只是服务没启动或配置崩了。
安装并启动 SSH 服务
执行以下命令(顺序不能乱):sudo apt updatesudo apt install -y openssh-serversudo systemctl start sshsudo systemctl enable ssh
注意:
• systemctl enable 是为了开机自启,不是“开启服务”本身
• WSL2 用户必须额外执行 sudo service ssh restart,否则常卡在 inactive 状态
• Ubuntu 24.04+ 若遇到 Failed to start ssh.service: Unit ssh.service is masked,先运行 sudo systemctl unmask ssh
检查端口监听与防火墙放行
SSH 默认监听 22 端口,但未必真在听:
运行 sudo ss -tlnp | grep :22,有输出才表示服务正在监听 IPv4 的 22 端口。
若无输出,大概率是 /etc/ssh/sshd_config 中的 ListenAddress 被设成了 127.0.0.1 或 ::1,需改成 0.0.0.0 并重启服务。
防火墙方面:
• 用 ufw 就跑 sudo ufw allow 22
• WSL2 用户还要在 Windows 主机上手动添加入站规则(Windows Defender 防火墙 → 高级设置 → 入站规则 → 新建规则 → 端口 → TCP 22)
• 云服务器(如阿里云、腾讯云)必须额外在控制台安全组里放行 22 端口,本地 ufw 开了也没用
允许 root 登录需显式配置
默认禁止 root 远程密码登录,这是故意的:
编辑 /etc/ssh/sshd_config,找到 PermitRootLogin 行:
• 改成 PermitRootLogin yes 才支持 root + 密码登录
• 更推荐 PermitRootLogin prohibit-password(仅密钥)
改完必须 sudo systemctl restart ssh,reload 不生效
别忘了给 root 设密码:sudo passwd root,否则即使配置开了也连不上
注意:Ubuntu 默认禁用 root 密码,且 PermitRootLogin 在新版中可能被注释掉,得手动取消注释 实际连不通时,最常卡在 WSL2 的端口转发、云厂商的安全组、或 sshd_config 里 ListenAddress 写死了回环地址——这三个点不排查清楚,其他操作全是白忙。
原创文章,作者:phoenix,如若转载,请注明出处:http://blog.if98.com/it/526.shtml
微信扫一扫
支付宝扫一扫 