-
Как настроить SSH в Proxmox?
-
Как подключиться по SSH к VM Proxmox?
-
Как настроить удалённый SSH-доступ в Proxmox VE?
-
Решение проблем подключения при настройке SSH
-
Дополнительная информация о SSH в Proxmox
-
Часто задаваемые вопросы о включении SSH в Proxmox
-
Заключение
SSH позволяет удалённо администрировать хосты и VM Proxmox VE через CLI. Он помогает обходиться без веб-интерфейса при автоматизации, запуске скриптов и устранении неполадок. SSH нужен, если веб-GUI недоступен или работает медленно. С его помощью можно автоматизировать массовые задачи, запускать пакетные обновления, диагностировать проблемы загрузки через serial console, например с помощью qm terminal, когда агенты не работают. Также можно напрямую проверять журналы или выполнять кластерные команды без действий мышью. SSH полезен и при анализе инцидентов, когда GUI зависает.
Если вы хотите безопасно настроить SSH, доступ к VM, усиление защиты и диагностику, следуйте этому руководству. В нём рассмотрены конфигурация, сетевые режимы, доступ по ключам, правила межсетевого экрана, кластерная настройка и распространённые способы исправления проблем.
Как настроить SSH в Proxmox?
1. Proxmox VE включает OpenSSH по умолчанию. Проверьте его с помощью systemctl status sshd. По умолчанию SSH прослушивает порт 22. Сначала обновите пакеты Proxmox до последней стабильной версии. Убедитесь, что SSH активен: ss -tuln | grep :22 покажет, что порт прослушивается. Отредактируйте /etc/ssh/sshd_config для усиления безопасности доступа. Например:
PermitRootLogin no PasswordAuthentication no AllowUsers admin_user Port 2222
2. Перезагрузите конфигурацию SSH: systemctl reload sshd. Проверьте подключение: ssh -T admin_user@proxmox_ip -p 2222.
3. Затем ограничьте root-доступ. Используйте PermitRootLogin no, чтобы принудительно использовать пользователей без root-прав. Создайте администратора: adduser admin_user, затем предоставьте sudo через usermod -aG sudo admin_user. Разместите публичный ключ в
/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>
Синтаксис может отличаться при использовании службы proxmox-firewall на базе nftables. Убедитесь, что правило активно.
5. Рассмотрите возможность изменения порта по умолчанию. После редактирования Port 2222 в sshd_config обновите контексты SELinux/AppArmor, если они применяются. Для SELinux: semanage port -a -t ssh_port_t -p tcp 2222. Перезагрузите политики. Настройте межсетевой экран так, чтобы он разрешал новый порт.
6. Установите Fail2Ban для защиты от brute-force атак. В Proxmox на базе Debian:
apt update apt install fail2ban
7. Создайте jail для SSH в /etc/fail2ban/jail.local:
[sshd] enabled = true port = 2222 filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 3600
8. Перезапустите службу: systemctl restart fail2ban. Отслеживайте заблокированные IP с помощью fail2ban-client status sshd.
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 permitroot grep -i allowusers /etc/ssh/sshd_config
Убедитесь, что настройки соответствуют политике безопасности. Для согласованности на всех узлах используйте инструмент управления конфигурациями.
Как подключиться по SSH к VM Proxmox?
1. Убедитесь, что в VM установлен SSH-сервер. Большинство Linux-шаблонов уже включает OpenSSH. Если он отсутствует, установите его: apt install openssh-server или аналогичную команду. Выберите сетевой режим: bridged, routed или NAT с пробросом портов. В режиме bridged VM получает IP в LAN через vmbr0. В режиме routed назначьте маршрутизируемую подсеть или используйте VLAN. Для NAT настройте port forwarding на хосте:
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. Проверьте межсетевой экран VM. Если межсетевой экран Proxmox VE включён для этой VM, временно отключите его с помощью qm set <VMID> --firewall 0 или добавьте правила, разрешающие SSH. Внутри VM проверьте ufw status или iptables -L. Убедитесь, что порт 22 открыт.
4. Используйте QEMU agent для получения данных из гостевой системы. Если он установлен, выполните:
qm guest exec <VMID> -- ip addr
Эта команда покажет IP VM без входа в систему. Убедитесь, что агент запущен внутри гостевой ОС.
5. Для root-входа лучше отключить прямой root-доступ в VM. Используйте обычного пользователя с sudo. Аналогично добавьте SSH-ключи. Используйте ssh-copy-id user@vm_ip. Если VM находится за NAT, убедитесь, что проброс портов работает на хосте и межсетевой экран сети его разрешает. Если используется routed mode, проверьте корректность маршрутизации и правил межсетевого экрана.
6. Для диагностики проблем SSH с клиентского хоста выполните nc -zv proxmox_ip 2223 или telnet proxmox_ip 2223. На VM проверьте systemctl status sshd, изучите /var/log/auth.log или journalctl -u sshd. При необходимости измените межсетевой экран или сетевые настройки.
Как настроить удалённый SSH-доступ в Proxmox VE?
1. Сначала убедитесь, что межсетевой экран хоста разрешает SSH-порт. В межсетевом экране Proxmox VE добавьте правило ACCEPT для SSH из доверенных подсетей или IP. Например:
pve-firewall add SSH --action ACCEPT --source 203.0.113.0/24
2. Если используются IPv4 и IPv6, примените правила для обоих протоколов. Для внешних межсетевых экранов разрешайте выбранный порт только с известных адресов.
3. Ограничьте SSH-доступ: используйте AllowUsers admin_user@203.0.113.* или похожую настройку в sshd_config. Это ограничит источники входа. Используйте только аутентификацию по ключам: PasswordAuthentication no. После этого перезагрузите SSH.
4. Измените порт по умолчанию. Отредактируйте Port 2222. Перезагрузите SSH: systemctl reload sshd. Обновите правила межсетевого экрана, чтобы разрешить новый порт. Для контекстов SELinux используйте semanage port -a -t ssh_port_t -p tcp 2222, если SELinux включён. Для AppArmor убедитесь, что нет конфликтующих профилей.
5. Для узлов кластера настройте SSH-ключи без пароля. На каждом узле:
ssh-keygen -t ed25519 ssh-copy-id -i ~/.ssh/id_ed25519.pub root@node2_ip -p 2222
6. Повторите настройку так, чтобы каждый узел мог подключаться к другим по SSH без пароля. Проверьте с помощью ssh node2 pvecm status. Это помогает при live migration, репликации и скриптах.
7. При необходимости используйте jump host. С рабочей станции администратора:
ssh -J admin_user@bastion_ip admin_user@proxmox_ip -p 2222
Это снижает риск прямого открытия доступа. Bastion-хост должен быть усилен и находиться под мониторингом.
8. Включите журналирование и мониторинг. Проверяйте /var/log/auth.log на события SSH. Интегрируйте журналы с SIEM или log collectors. Настройте ротацию журналов и оповещения о повторяющихся неудачных попытках входа. Используйте Fail2Ban для блокировки атакующих. Периодически проверяйте /etc/ssh/sshd_config через sshd -T. Автоматизируйте проверки в CI/CD pipelines.
Решение проблем подключения при настройке SSH
1. Если кажется, что SSH-порт закрыт, проверьте на хосте ss -tuln | grep 2222. С удалённой стороны используйте nc -zv proxmox_ip 2222. Если запрос истекает по тайм-ауту, проверьте межсетевой экран. Если подключение отклонено, убедитесь, что sshd активен: systemctl status sshd. Проверьте отказы SELinux/AppArmor в audit logs.
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. Проверьте host keys; замените устаревшие записи в ~/.ssh/known_hosts, если IP-адреса изменились.
Дополнительная информация о SSH в Proxmox
Следуя пошаговому руководству выше, вы сможете защитить SSH-доступ. Но для Proxmox также нужен надёжный план резервного копирования. Vinchin Backup & Recovery - корпоративное решение для защиты Proxmox.
Оно поддерживает полное и инкрементное резервное копирование VM.
Оно использует дедупликацию и сжатие для экономии хранилища.
Оно позволяет выполнять резервное копирование по расписанию и задавать политики хранения.
Оно бесшовно интегрируется с Proxmox и другими виртуальными платформами, такими как VMware и Hyper-V.
Оно создаёт задания резервного копирования для VM без установки агента.
Оно также проверяет резервные копии и обеспечивает быстрое восстановление.
Оно поддерживает внешнюю репликацию и шифрование для безопасности данных, помогая обеспечивать непрерывность бизнеса и ускорять восстановление.
Оно также упрощает удобную V2V-миграцию между поддерживаемыми виртуальными платформами, обеспечивая гибкость и простую передачу данных.
Веб-консоль Vinchin интуитивно понятна. Чтобы создать резервную копию Proxmox VM:
Шаг 1. Сначала выберите Proxmox VM, для которой нужно создать резервную копию.

Шаг 2. Затем выберите хранилище резервных копий в своей среде.

Шаг 3. Затем настройте стратегии резервного копирования.

Шаг 4. Наконец, отправьте задание.

Vinchin обслуживает клиентов по всему миру и получает высокие оценки. Воспользуйтесь 60-дневной бесплатной пробной версией со всеми функциями, чтобы понять, как решение подходит вашему рабочему процессу. Скачайте установщик для простого развертывания и начните защищать свои VM уже сегодня.
Часто задаваемые вопросы о включении SSH в Proxmox
Вопрос 1. Как проверить SSH-подключение, если GUI Proxmox недоступен?
Используйте ssh admin_user@proxmox_ip -p 2222 с доверенного хоста; убедитесь, что порт открыт и служба SSH активна.
Вопрос 2. Как усилить безопасность SSH в Proxmox?
Отключите root-вход (PermitRootLogin no), включите аутентификацию по ключам (PasswordAuthentication no), ограничьте исходные IP-адреса через межсетевой экран/AllowUsers, измените порт (Port 2222) и установите Fail2Ban.
Вопрос 3. Как подключиться по SSH к VM за NAT?
Настройте проброс портов на хосте или используйте VPN: iptables -t nat -A PREROUTING -p tcp --dport 2223 -j DNAT --to-destination <VM_IP>:22, затем выполните ssh user@host_ip -p 2223.
Вопрос 4. Влияет ли межсетевой экран Proxmox на SSH-доступ?
Да. Если межсетевой экран Proxmox включён, нужно разрешить входящий трафик на SSH-порт, обычно TCP 22.
Заключение
SSH крайне важен для надёжного управления Proxmox. Защитите его с помощью аутентификации по ключам, правил межсетевого экрана, принципа минимальных привилегий и регулярных проверок. Включайте настройку SSH в процессы автоматизации и стратегии резервного копирования, чтобы обеспечить быстрое восстановление. Поддерживайте согласованные конфигурации на всех узлах и отслеживайте журналы доступа. Vinchin дополняет операции с SSH, предлагая корпоративную защиту VM в различных средах. До или после любых операций попробуйте Vinchin, чтобы получить надёжную защиту данных.