Kali Linux 2024.4默认未安装SSH服务端,必须先执行sudo apt install openssh-server安装并验证密钥生成,再通过sudo systemctl enable --now ssh启动服务并设开机自启,最后检查sudo ss -tlnp | grep ':22'确认监听状态。

Kali Linux 2024.4 默认不启动 SSH 服务端,直接 ssh 连接会失败;其他主流发行版(如 Ubuntu、Debian)也常默认未安装或未启用 sshd。必须手动确认安装、启动并配置监听状态,否则“连不上”不是网络问题,而是服务根本没跑。
确认 openssh-server 是否已安装并生成密钥
很多用户执行 sudo systemctl start ssh 后发现状态是 failed,根源常是服务端没装,或密钥缺失导致启动拒绝。Kali 2024.4 虽有自动再生机制,但首次仍需验证:
- 运行
dpkg -l | grep openssh-server(Debian/Ubuntu/Kali)或rpm -q openssh-server(RHEL/CentOS),无输出即未安装 - 若已安装,检查密钥是否存在:
ls /etc/ssh/ssh_host_*_key—— 至少应有rsa、ecdsa、ed25519三类之一,缺则sudo systemctl restart ssh会静默失败 - 如密钥全无,手动触发生成:
sudo ssh-keygen -A,再重启服务
启动服务并设为开机自启(systemctl 是唯一推荐方式)
service 命令在 Kali 2024.4 及新版 systemd 系统中仅作兼容层,不保证状态持久化。用错命令会导致“重启后 SSH 又断了”:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 启动服务:
sudo systemctl start ssh(注意服务名是ssh,不是sshd—— Kali 和 Debian 系使用ssh,RHEL 系才是sshd) - 立即启用开机自启:
sudo systemctl enable --now ssh(--now表示同时 start + enable,一步到位) - 验证是否真在监听:
sudo ss -tlnp | grep ':22'或sudo netstat -tlnp | grep ssh,看到LISTEN才算成功
修改 /etc/ssh/sshd_config 前必做的三件事
改配置不是加几行就完事,常见错误是改完不重启、不检查语法、或忽略防火墙——结果改了等于没改:
- 先备份原文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak - 编辑前确认关键项未被注释:比如
Port 22前不能有#,ListenAddress 0.0.0.0(或删掉该行,默认监听所有地址) - 改完务必检查语法:
sudo sshd -t—— 返回空行才表示配置合法;若有报错(如Bad configuration option),systemctl restart ssh会直接失败 - 最后重启:
sudo systemctl restart ssh,再用sudo systemctl status ssh看 active (running) 且无 warning
连接测试时最容易卡住的两个点
从 Windows 或手机连不上?别急着查网线,先盯住这两处:
- 客户端命令必须带
-p指定端口:如果服务端改了Port 2222,Windows 上用 PuTTY 就得填 2222,命令行必须写ssh -p 2222 user@ip,漏掉就永远连在 22 端口上 - 本地防火墙(尤其是 Windows Defender 防火墙或 Linux 的
ufw)可能拦了出站连接;服务器端防火墙(如iptables或nftables)更常拦入站 —— 必须放行对应端口:sudo ufw allow 2222或sudo iptables -I INPUT -p tcp --dport 2222 -j ACCEPT
真正麻烦的从来不是“怎么开”,而是“开了之后谁连得上、连到哪、连了能干啥”。PermitRootLogin、PasswordAuthentication、AllowUsers 这些配置项一旦设错,可能把自己锁在外面。改之前一定留一个本地终端开着,别关机,也别依赖单一连接通道。

















