在 Proxmox VE 中启用 SSH
2026-07-24
SSH 可实现对 Proxmox VE 主机及虚拟机的远程命令行界面(CLI)管理。它绕过网页用户界面,适用于自动化操作、脚本编写和故障排查。当网页图形界面无法访问或响应缓慢时,您需要使用 SSH。您可借助脚本批量执行任务或运行批量更新。当客户机代理失效时,可通过串口控制台(例如使用 qm terminal)调试启动问题。您也可直接查看日志,或无需鼠标点击即可运行集群命令。当图形界面卡死时,SSH 还有助于事故后的分析工作。
如需保障 SSH 配置、虚拟机访问、系统加固及诊断功能的安全性,请参考本指南,内容涵盖配置方法、网络模式、基于密钥的访问、防火墙规则、集群搭建以及常见问题修复。
如何在 Proxmox 中配置 SSH?
1. Proxmox VE 默认包含 OpenSSH。可通过 systemctl status sshd 命令验证。默认监听端口为 22。首先将 Proxmox 软件包更新至最新稳定版本。确认 SSH 已启用:ss -tuln | grep :22 可显示端口正在监听。编辑 /etc/ssh/sshd_config 文件以加强访问安全。例如:
PermitRootLogin noPasswordAuthentication noAllowUsers admin_userPort 2222
2. 重新加载 SSH: systemctl reload sshd。验证命令:ssh -T admin_user@proxmox_ip -p 2222。
3. 接下来,禁用 root 用户登录。使用 PermitRootLogin no 强制使用非 root 用户。创建一个管理员用户:adduser admin_user,然后通过 usermod -aG sudo admin_user 授予其 sudo 权限。将您的公钥放入
/home/admin_user/.ssh/authorized_keys。在客户端运行 ssh-keygen -t ed25519,然后执行 ssh-copy-id -i ~/.ssh/id_ed25519.pub admin_user@proxmox_ip -p 2222。
4. 设置防火墙规则。如果您在独立的管理主机或测试环境中使用 UFW,请运行 ufw allow 2222/tcp。对于 Proxmox VE 防火墙,请添加一条规则:
pve-firewall add SSH --action ACCEPT --source <TRUSTED_IP> --iface <node>
如果使用基于 nftables 的 proxmox-firewall 服务,语法可能有所不同。请确认该规则已启用。
5. 考虑更改默认端口。在编辑 sshd_config 中的 端口 2222 后,若启用了 SELinux 或 AppArmor,请相应更新其上下文。对于 SELinux,请执行:semanage port -a -t ssh_port_t -p tcp 2222。重新加载策略,并调整防火墙以允许该新端口。
6. 安装 Fail2Ban 以防止暴力破解攻击。在基于 Debian 的 Proxmox 系统上:
apt updateapt install fail2ban
7. 为 SSH 创建防护规则:在 /etc/fail2ban/jail.local 中:
[sshd]enabled = trueport = 2222filter = sshdlogpath = /var/log/auth.logmaxretry = 5bantime = 3600
8. 重启:systemctl restart fail2ban。使用fail2ban-client status sshd监控被封禁的IP地址。
9. 如需,可添加双重身份验证。安装 libpam-google-authenticator:
apt install libpam-google-authenticator
10. 为每位用户运行 google-authenticator。在 /etc/pam.d/sshd 中添加:
auth required pam_google_authenticator.so
11. 在 sshd_config 中,设置 ChallengeResponseAuthentication yes。重新加载 SSH 服务。使用密钥加 TOTP 进行登录测试。
12. 定期审核 SSH 配置:
sshd -T | grep -i permitrootgrep -i allowusers /etc/ssh/sshd_config
确保设置与策略一致。使用配置管理工具以保证各节点间的一致性。
如何通过SSH登录Proxmox虚拟机?
1. 确保虚拟机已安装并运行SSH服务器。大多数Linux模板默认包含OpenSSH。若未安装,请执行:apt install openssh-server 或相应命令。选择网络模式:**桥接(Bridged)**、**路由(Routed)** 或启用端口转发的 **NAT**。桥接模式下,虚拟机通过vmbr0在局域网中获取IP地址;路由模式下,需为其分配一个路由子网或使用VLAN;NAT模式下,则需在宿主机上配置端口转发:
iptables -t nat -A PREROUTING -p tcp --dport 2223 -j DNAT --to-destination <VM_IP>:22
2. 测试连通性:从宿主机执行 ssh root@<VM_IP>,或通过转发端口连接:ssh user@host_ip -p 2223。
3. 验证虚拟机防火墙。如果该虚拟机已启用 Proxmox VE 防火墙:请临时禁用,命令为 qm set <VMID> --firewall 0,或添加允许 SSH 的规则。在虚拟机内部,运行 ufw status 或 iptables -L 进行检查,确保端口 22 已开放。
4. 使用 QEMU 代理获取内部信息:如果已安装,请运行:
qm guest exec <VMID> -- ip addr
此操作可在不登录虚拟机的情况下显示其 IP 地址。请确保客户机中代理程序正在运行。
5. 对于 root 登录,请考虑在虚拟机中禁用直接 root 登录,改用具备 sudo 权限的非 root 用户。SSH 密钥的添加方式类似,可使用 ssh-copy-id user@vm_ip 命令。若虚拟机位于 NAT 后方,请确保主机上的端口转发已正确配置,且网络防火墙允许相应流量通过;若采用路由模式,请确认路由设置与防火墙规则均配置正确。
6. 调试 SSH 连接失败:在客户端主机上运行 nc -zv proxmox_ip 2223 或 telnet proxmox_ip 2223。在虚拟机中:检查 systemctl status sshd,查看 /var/log/auth.log 或运行 journalctl -u sshd。根据需要调整防火墙或网络设置。
如何在 Proxmox VE 上设置 SSH 远程访问?
1. 首先,确保主机防火墙允许 SSH 端口。在 Proxmox VE 防火墙中:为来自可信子网或 IP 的 SSH 添加一条 ACCEPT 规则。例如:
pve-firewall add SSH --action ACCEPT --source 203.0.113.0/24
2. 若使用,需同时应用于 IPv4 和 IPv6。对于外部防火墙,仅允许来自已知地址的选定端口通信。
3. 限制 SSH 访问:在 sshd_config 中使用 AllowUsers admin_user@203.0.113.* 或类似配置,以限制登录来源。仅启用密钥认证:PasswordAuthentication no。随后重新加载 SSH 服务。
4. 更改默认端口。编辑 端口 2222。重新加载 SSH 服务:systemctl reload sshd。更新防火墙规则以允许新端口。若启用了 SELinux,请使用 semanage port -a -t ssh_port_t -p tcp 2222 命令添加端口上下文。对于 AppArmor,请确保不存在冲突的配置文件。
5. 为集群节点配置免密码 SSH 密钥。在每个节点上执行:
ssh-keygen -t ed25519ssh-copy-id -i ~/.ssh/id_ed25519.pub root@node2_ip -p 2222
6. 重复上述操作,使每个节点均可无需密码通过 SSH 登录其他节点。使用 ssh node2 pvecm status 命令进行验证。此配置有助于实现虚拟机热迁移、数据复制及脚本自动化。
7. 如有需要,使用跳转主机:从管理工作站出发:
ssh -J admin_user@bastion_ip admin_user@proxmox_ip -p 2222
此举可确保直接暴露。请持续加固并监控堡垒主机。
8. 启用日志记录和监控。检查 /var/log/auth.log 中的 SSH 事件。与 SIEM 系统或日志收集工具集成。定期轮转日志,并为重复失败事件设置告警。使用 Fail2Ban 封禁攻击者。定期通过 sshd -T 审计 /etc/ssh/sshd_config 文件。在 CI/CD 流水线中自动化执行此类检查。
解决 SSH 配置相关的连接问题
1. 如果 SSH 端口看似关闭:在宿主机上运行 ss -tuln | grep 2222 进行测试;从远程主机执行 nc -zv proxmox_ip 2222。若超时,请检查防火墙设置;若显示“连接被拒绝”,请确认 sshd 服务已启用:systemctl status sshd,并检查审计日志中是否存在 SELinux 或 AppArmor 的拒绝记录。
2. 如果主机无法通过 SSH 访问但图形界面(GUI)正常工作,请检查网络接口和路由: ip addr, ip route。如果图形界面(GUI)无法访问但 SSH 正常工作,请检查 systemctl status pveproxy 和 ss -tuln | grep 8006。重启图形界面(GUI)服务:systemctl restart pveproxy pvedaemon。
3. 如果基于密钥的登录失败,请启用详细模式的 SSH 客户端:ssh -vvv admin_user@proxmox_ip -p 2222。检查密钥或权限是否存在不匹配问题。确保 ~/.ssh 目录和 authorized_keys 文件具有正确的权限(700 / 600)。
4. 如果集群命令无响应,请验证节点之间的 SSH 连通性。使用 ssh node1 pvecm status 和 ssh node2 hostname。检查 主机密钥;当 IP 地址发生变化时,请替换 ~/.ssh/known_hosts 中过期的条目。
Proxmox SSH 的更多信息
按照上述分步指南操作,您可以保障 SSH 访问的安全性。但您还需要为 Proxmox 制定可靠的备份方案。Vinchin 备份与恢复 是面向 Proxmox 的最佳企业级解决方案。
-
支持完整虚拟机备份和增量虚拟机备份。
-
它采用重复数据删除和压缩技术来节省存储空间。
-
它提供计划备份和设置保留策略。
-
无需安装代理即可为虚拟机创建备份任务。
-
它还可验证备份并提供快速恢复功能。
-
它还支持异地复制和数据加密,以保障数据安全,始终确保业务连续性并简化恢复流程。
-
它还支持在受支持的虚拟平台之间无缝进行虚拟机到虚拟机(V2V)迁移,确保数据传输灵活便捷。
Vinchin 网页控制台操作直观。备份 Proxmox 虚拟机的步骤如下:
步骤 1:首先,选择您要备份的 Proxmox 虚拟机。
步骤 2:接下来,在您的环境中选择备份存储。
步骤 3:然后配置备份策略。
步骤 4:最后,提交任务。
Vinchin 服务全球客户,并获得高度评价。立即享受15天全功能免费试用,亲身体验其如何契合您的工作流程。下载安装程序,轻松部署,即刻开始保护您的虚拟机。
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
Proxmox 启用 SSH 常见问题解答
问题1:当 Proxmox 图形界面不可用时,如何测试 SSH 连通性?
从受信任的主机使用 ssh admin_user@proxmox_ip -p 2222 ;确认端口已开放且 SSH 服务正在运行。
问题2:如何在 Proxmox 上强化 SSH 安全性?
禁用 root 用户登录(PermitRootLogin no),强制使用密钥认证(PasswordAuthentication no),限制源 IP 地址(防火墙/AllowUsers),修改 SSH 端口(Port 2222),并安装 Fail2Ban。
Q3:如何通过SSH连接到位于NAT之后的虚拟机?
设置主机端口转发或使用VPN:iptables -t nat -A PREROUTING -p tcp --dport 2223 -j DNAT --to-destination <VM_IP>:22,然后运行 ssh user@host_ip -p 2223。
第四季度问题:Proxmox 防火墙是否会影响 SSH 访问?
是的。如果启用了 Proxmox 防火墙,则必须允许 SSH 端口(通常是 TCP 22)的入站流量。
结论
SSH 对于稳健的 Proxmox 管理至关重要。应通过基于密钥的身份验证、防火墙规则、最小权限原则及定期审计来保障其安全性。将 SSH 配置集成至自动化工作流与备份策略中,以确保快速恢复能力。在各节点间保持配置一致性,并持续监控访问日志。Vinchin 通过在多种环境中提供企业级虚拟机保护,进一步增强 SSH 运维能力。无论操作前后,立即试用,尽享顶级数据安全防护。