Proxmox VE 利用虚拟机对宿主机进行关机操作
以下操作不适合生产环境使用,请谨慎评估需求后再进行相关操作本文目标实现只能由特定虚拟机登录宿主机实现虚拟机中任务完成后实现宿主机关机操作临时解决 PVE web端无法登录问题问题缘由由于之前为PVE设置了OTP(动态一次性密码)登录,但由于最近服务器出现故障,可能时硬件问题导致服务器时钟不正确,也可能时软件问题,导致无法使用web端正常登录,因此需要使用命令行进入宿主机进行相关的操作。过去一般时远
以下操作不适合生产环境使用,请谨慎评估需求后再进行相关操作
本文目标
- 实现只能由特定虚拟机登录宿主机
- 实现虚拟机中任务完成后实现宿主机关机操作
- 临时解决 PVE web端无法登录问题
问题缘由
由于之前为PVE设置了OTP(动态一次性密码)登录,但由于最近服务器出现故障,可能时硬件问题导致服务器时钟不正确,也可能时软件问题,导致无法使用web端正常登录,因此需要使用命令行进入宿主机进行相关的操作。
过去一般时远程通过web登录查看服务器状态,如果当前服务器已经完成所有任务,为了节能,会对服务器进行关机操作。
恰好遇到上上述的问题,硬件问题未必能很容易解决(因为开发服务器非常老旧的二手服务器,已经不太有维修价值)。所以将尝试完成自动关机的操作。
思路
曾经有接触过,通过远程连接服务器,要先使用跳板机。因此,我们可以参考这样的操作。因为直接远程登录宿主机其实并不太安全。
所以,这里我们的问题将是如何设置只能由指定的虚拟机登录,并执行相关宿主机操作即可。
SSHD IP登录限制
首先,我们需要设置sshd
的ip访问限制,我们可以通过 hosts.allow
和hosts.deny
来配置。
添加允许访问ip
vim /ets/hosts.allow
# 添加以下内容
# ip 可设置为指定虚拟机的ip地址
sshd:<ip>:allow
禁止访问ip
vim /etc/hosts.deny
# 添加以下内容
# 禁止其余ip访问
sshd:ALL
完成上述操作后,即可在指定虚拟机的ip地址登录
使用密钥代替密码登录
为了方便在虚拟机中对宿主机进行操作,我们可以使用密钥代替每次输入密码登录,具体操作步骤可以参考Ubuntu 远程免密码登录设置
# 假设我们的宿主机命名为 pve-host
# 可以使用 ssh 免密登录
ssh pve-host
# 如果需要执行宿主机命令 例如关机:
ssh pve-host shutdown -h now
以上既完成了让虚拟机对宿主机进行关机的操作。
但是,以上的方法有很大的安全隐患以及局限性。如果你的服务器仅仅是你自己操作,并且能明确知道其他虚拟机的运行状态,可以有限的使用。但生产环境尤其应该禁止这样操作,因为有可能会造成不必要的损失!
[附]简单python关机脚本
import subprocess
def shutdown_host():
sd_cmd = 'ssh pve-host shutdown -h now'
subprocess.Popen(sd_cmd, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, universal_newlines=True)
if __name__ == "__main__":
shutdown_host()
更多推荐
所有评论(0)