在 Proxmox LXC 容器裡開啟 Root SSH 登入
有時候管理 LXC 容器真的需要直接用 root SSH 進去,雖然不太安全,但如果是內網測試環境,這樣做其實挺方便的。
先說清楚,這樣做有風險
直接開放 root SSH 登入會讓系統比較不安全。這個方法只建議用在:
- 自家內網環境
- 測試機或開發機
- 有設防火牆隔離的環境
如果是正式上線的機器,請用 SSH 金鑰認證,不要用密碼登入。
為什麼要這樣做
管理 Proxmox 上的 LXC 容器時,有時候真的需要直接 SSH 進去用 root 帳號做事。但預設的 Linux 系統為了安全考量,通常會把 root 的 SSH 登入功能關掉。
像我自己在測試環境裡就會這樣設定,畢竟方便很多。當然,如果是正式環境就不建議這樣搞了。
開始之前
你需要:
- Proxmox 主機的 root 權限
- 一個已經在跑的 LXC 容器
- 容器的 ID(像是 100、101 這種)
設定步驟
第一步:進到容器裡面
Proxmox 提供兩種方式可以進容器的 shell:
用 pct 指令(我比較常用這個)
pct enter 100或者用 lxc-attach 指令
lxc-attach --name CT100
pct是 Proxmox Container Toolkit 的縮寫,算是 Proxmox 專用的容器管理工具。後面的100就是容器 ID,記得換成你自己的。
第二步:改 SSH 設定
進去之後,用這兩行指令改設定:
# 允許 root 登入
sed -i 's/^[#]*\s*PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config
# 允許用密碼登入
sed -i 's/^[#]*\s*PasswordAuthentication .*/PasswordAuthentication yes/' /etc/ssh/sshd_config這兩行指令會自動幫你把 SSH 設定檔裡的相關設定打開,不管原本是註解掉還是設成其他值,都會改成允許。
第三步:重開 SSH 服務
systemctl restart sshd搞定!現在可以用 root 帳號 SSH 進容器了。
第四步:測試看看
從 Proxmox 主機或其他機器試試看:
ssh root@容器的IP輸入 root 密碼,應該就能進去了。
安全性建議
雖然開了 root SSH,但還是可以做一些事情提升安全性:
1. 用 SSH 金鑰登入
這個比密碼安全多了:
# 在你的電腦上執行
ssh-keygen -t ed25519 -C "your_email@example.com"
# 把公鑰複製到容器
ssh-copy-id root@容器IP2. 關掉密碼登入
確認金鑰可以用之後,把密碼登入關掉:
# 在容器裡執行
sed -i 's/^[#]*\s*PasswordAuthentication .*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd3. 換掉預設的 SSH Port
把 Port 22 改成別的:
nano /etc/ssh/sshd_config找到 Port 這行,改成別的數字(例如 2222):
Port 2222
存檔後重啟:
systemctl restart sshd改了 Port 之後,登入時要加
-p 2222:ssh -p 2222 root@容器IP
4. 設定防火牆
只讓特定 IP 可以連進來:
# 如果有裝 ufw
ufw allow from 192.168.1.0/24 to any port 22
ufw enable
# 或用 iptables
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP5. 裝 Fail2ban 防暴力破解
# Debian 或 Ubuntu
apt update && apt install fail2ban -y
# 啟動服務
systemctl enable --now fail2ban手動改設定檔
如果你不習慣用指令,也可以直接編輯設定檔:
nano /etc/ssh/sshd_config找到這兩行,把註解拿掉並改成 yes:
# 改之前可能長這樣
#PermitRootLogin prohibit-password
#PasswordAuthentication no
# 改成這樣
PermitRootLogin yes
PasswordAuthentication yes存檔後重開 SSH:
systemctl restart sshd確認設定有沒有生效
# 看 root 登入設定
sshd -T | grep permitrootlogin
# 看密碼認證設定
sshd -T | grep passwordauthentication
# 看 SSH 服務狀態
systemctl status sshd常見問題
連不上去
先看 SSH 服務有沒有在跑:
systemctl status sshd檢查 SSH Port 有沒有在監聽:
ss -tlnp | grep sshd密碼一直錯
可能 root 密碼沒設定好,重設一下:
passwd root防火牆擋住了
看一下防火牆規則:
# ufw 的話
ufw status
# iptables 的話
iptables -L -n -vSELinux 擋住(CentOS/RHEL)
# 看 SELinux 狀態
sestatus
# 暫時關掉測試(只是測試用)
setenforce 0用 Proxmox 網頁介面
如果 SSH 真的連不上,還可以用 Proxmox 的網頁介面:
- 登入 Proxmox 網頁
- 選你的容器
- 點 Console 那個頁籤
- 用 root 帳號密碼登入
這招在 SSH 掛掉的時候特別好用。
總結
在 Proxmox LXC 容器開 root SSH 登入時,記得:
建議這樣做:
- 只在自己信任的網路環境開
- 盡量用 SSH 金鑰認證
- 設防火牆限制來源 IP
- 記得更新系統和 SSH
- 裝個 Fail2ban 比較安心
不要這樣做:
- 在公開網路用密碼登入
- 用太簡單的密碼
- 什麼防護都不設
- 一直不更新
- 用預設 Port 又不限制來源
再次提醒
這個設定方法會讓系統比較不安全。請自己評估使用場景,該做的安全措施還是要做。正式環境強烈建議用 SSH 金鑰認證,搭配其他安全設定。

