Xshell4 连接 Ubuntu 24.04 LTS:在 22 端口启用 root+密码登录(兼容老算法/KEX)

适用场景:你必须继续使用 Xshell4 这类老 SSH 客户端,但系统是 Ubuntu 24.04 LTS Server(OpenSSH 新版本),默认算法更现代,导致老客户端握手失败或无法用 root+密码登录。本文给出一个可用的“老派方案”。


我的需求

  • 必须继续使用 Xshell4
  • 连接 Ubuntu 24.0422 端口
  • 希望用 root + 密码 登录(老派习惯)
  • 最终实现:Xshell4 能正常 SSH 登录 root

背景:为什么 Xshell4 会连不上?

Ubuntu 24.04 的 OpenSSH 默认偏安全,很多旧算法会被禁用或优先级降低。
而 Xshell4 往往只支持/优先使用一些老算法,比如:

  • 旧的 KEX:diffie-hellman-group1-sha1 / group14-sha1
  • 旧的主机密钥算法:ssh-rsa
  • 旧的 MAC/Cipher:hmac-sha1aes*-cbc、甚至 3des-cbc

因此会出现类似错误:

  • “找不到匹配的 key exchange 算法”
  • 或握手/认证阶段失败

风险提示(必须读)

为了兼容 Xshell4,需要启用 SHA1 / CBC / ssh-rsa 等旧算法,这些算法安全性较弱。
强烈建议:

  • 只在内网使用(虚拟机/局域网环境)
  • 不要把 22 端口直接暴露到公网
  • 如果必须公网使用,至少限制来源 IP、防火墙、Fail2ban、或者改为密钥登录

本文仅为“兼容老工具”的实用方案。


1)安装并确认 SSH 服务

Ubuntu server 有时是 minimized 环境,先确认 sshd 已安装并监听 22:

sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable --now ssh

ss -lntp | grep ':22'

看到 LISTEN ... :22 即正常。


2)生成主机密钥(确保包含 RSA)

Xshell4 兼容性通常需要 RSA 主机密钥:

sudo ssh-keygen -A
ls -l /etc/ssh/ssh_host_*key

应该能看到类似:

  • /etc/ssh/ssh_host_rsa_key
  • /etc/ssh/ssh_host_ed25519_key
  • /etc/ssh/ssh_host_ecdsa_key

3)为 Xshell4 开启“老算法兼容”(推荐用 drop-in 文件)

Ubuntu 24.04 支持 /etc/ssh/sshd_config.d/*.conf 方式追加配置,比直接改主配置更干净。

创建兼容配置文件:

sudo tee /etc/ssh/sshd_config.d/99-xshell4.conf >/dev/null <<'EOF'
# Xshell4 legacy compatibility (weaker algorithms; LAN-only recommended)

KexAlgorithms +diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

Ciphers +aes128-cbc,aes256-cbc,3des-cbc
MACs +hmac-sha1,hmac-md5

PasswordAuthentication yes
EOF

说明:

  • 这是“优先能连上”的组合,偏兼容,不偏安全。

4)启用 root + 密码登录(老派模式)

4.1 设置 root 密码

Ubuntu 默认 root 可能锁定,必须显式设置密码:

sudo passwd root

4.2 允许 root 通过密码登录

编辑刚才的 drop-in 文件:

sudo vi /etc/ssh/sshd_config.d/99-xshell4.conf

在末尾追加:

PermitRootLogin yes

注意:如果你用 vi 直接编辑系统文件,务必使用 sudo vi ...,否则会只读无法保存。


5)检查配置并重启 SSH

sudo sshd -t
sudo systemctl restart ssh

验证最终生效配置(可选但很实用):

sudo sshd -T | egrep 'permitrootlogin|passwordauthentication|kexalgorithms|hostkeyalgorithms|pubkeyacceptedalgorithms|ciphers|macs'

6)Xshell4 连接参数

  • Host:Ubuntu 主机 IP(例如 192.168.50.123
  • Port:22
  • User:root
  • Password:你刚设置的 root 密码

至此,Xshell4 应该可以直接 root+密码登录 Ubuntu 24.04。


常见问题排查

1)还是提示 “key exchange” 不匹配

确认配置文件路径正确:
/etc/ssh/sshd_config.d/99-xshell4.conf

并确认语法无误:

sudo sshd -t

2)能握手但 root 登录失败

确认:

  • 是否执行过 sudo passwd root
  • 配置是否包含 PermitRootLogin yes
  • 重启过 SSH:sudo systemctl restart ssh

3)编辑文件提示只读

你可能忘记 sudo 打开:

sudo vi /etc/ssh/sshd_config.d/99-xshell4.conf

最后建议(更稳一点)

如果你能接受稍微“现代”一点,建议把 root+密码改成:

  • root 只允许密钥登录:PermitRootLogin prohibit-password
  • 或者仍用普通用户登录 + sudo

但如果你像我一样坚持老派,那至少确保 SSH 只在内网可达。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注