我有带 esxi 的专用服务器。我向 esxi 添加了额外的用户,并在/etc/keys/keys-user/authorized_keys
然后我重启了服务器,发现那个密钥文件夹不见了。然后我发现我需要将密钥复制到某个持久存储中,然后输入命令,/etc/rc.local.d/local.sh
但我发现即使该文件在重启后也会被重写。所以我的问题是
- 我需要在哪个文件中写入内容以便它在重启后仍然存在
- 现在我想禁用密码验证。我知道我可以在 sshd_config 中做到这一点。但我希望它是非永久性的。我的意思是我想手动禁用它,如果我重新启动,那么我希望它重置回启用身份验证的原始文件
UPADTE 我已经设置了防火墙规则,只有我的家庭 IP 可以访问 esxi,其他的都不行。现在,以防万一我无法连接,我想要的是通过 ssh 登录并禁用防火墙一段时间,然后可能会更改新 IP 的防火墙规则,然后重新启用防火墙。这就是我想要 ssh 访问的原因。几天前,我的 root 帐户被锁定了,因为有人暴力破解了。所以以防万一,我想有额外的用户可以通过 ssh 登录来解决问题。我已经启用了基于 ssk 密钥的身份验证,但它是公开的。所以我想将 ssh 限制到家庭 IP,在紧急情况下,如果我的 IP 发生变化,我可以重新启动 esxi,以便基于密码的身份验证工作,然后我就可以修复防火墙。我是家庭用户,所以买不起 esxi 上的硬件防火墙。
我有用于内部机器的 pfSense。我没有任何公共站点,只有我的实验室的东西。我不想将 esxi 放在 pfSense 后面,因为如果 pfSense 出现问题,那么我就会被锁定,除了重新安装所有东西外,我将别无选择
答案1
1. 持久保存 SSH 密钥
根据我的经验,/etc/rc.local.d/local.sh
重启后文件仍然有效。值得一提的是,该文件每小时或完全关机时仅保存一次(请参阅ESXi 多久写入一次启动盘?)。
因此,更改未保存的一个原因可能是您进行了硬重置或电源循环,而不是reboot
。
您可以通过发出 来查看系统是否保存了更改/sbin/auto-backup.sh
,这会立即将文件保存到引导槽(请参阅如何在 ESXi 4.x/5.x 中保留配置更改,仍然适用于 v6.x)。
2. 禁用密码验证
我的 ESXi 也在公共网络上。/etc/ssh/sshd_config
我已更改
PermitRootLogin yes
到
PermitRootLogin prohibit-password
PubkeyAuthentication yes
这已经降低了 root 用户因输入无效密码而被锁定的可能性(因为 root 用户首先不允许使用密码)。此外,基于密钥的身份验证被认为比密码身份验证更安全(如果您安全地保管密钥!)。
如果你想完全禁用密码验证,你还必须设置
UsePAM no
PasswordAuthentication no
然而,这些变化永恒的(/etc/ssh/sshd_config
与 一起保存/sbin/auto-backup.sh
)和即时(如果是 sshd,则无需重新启动,因为 sshd 实际上是由 inetd 启动的)。因此,这里没有非永久性更改的方法。
3.防火墙
如果你仍然想更改防火墙规则,你可以创建一个文件ssha_from_anywhere.xml
,内容如下
<ConfigRoot>
<service id='1000'>
<id>sshServer</id>
<rule id='0000'>
<direction>inbound</direction>
<protocol>tcp</protocol>
<porttype>dst</porttype>
<port>22</port>
</rule>
<enabled>true</enabled>
<required>true</required>
</service>
</ConfigRoot>
在持久存储中,并/etc/vmware/firewall/
在启动期间将其复制到(再次从/etc/rc.local.d/local.sh
)。然后使用 vSphere 客户端更改现有防火墙规则以仅允许本地地址。
一旦系统重新启动,ssh 端口就会向全世界开放。然后您需要登录并删除/etc/vmware/firewall/ssha_from_anywhere.xml
并重新加载防火墙:
esxcli network firewall refresh
然而,前这样做,您必须调整允许连接到 ssh 的 IP 地址。您可能还想在 vSphere 客户端中再次执行此操作,或者直接在 中执行此操作/etc/vmware/firewall/service.xml
。在前一种情况下(如果您没有禁用 vSphere 客户端界面),整个过程似乎毫无意义,因为您只需使用 vSphere 客户端登录并更改 IP 地址即可。
vSphere Client 中所做的更改会反映在/etc/vmware/esx.conf
文件中,例如
/firewall/services/sshServer/allowedip[0000]/ipstr = "192.168.1.1"
/firewall/services/sshServer/allowedip[0001]/ipstr = "192.168.2.0/24"
虽然我知道这个文件在重启后会保留,但我不确定更改是如何激活的。也许你可以编辑这个文件然后reboot
?然后在第二次重启后删除/etc/vmware/firewall/ssha_from_anywhere.xml
并重新加载防火墙。
来源
祝你好运!
马丁