1. Chaves SSH persistentes
Na minha experiência, o /etc/rc.local.d/local.sh
é realmente persistente durante as reinicializações. Vale a pena mencionar que o arquivo só é salvo uma vez e por hora ou durante um desligamento normal (consulte Com que frequência o ESXi escreve no disco de inicialização? ).
Portanto, uma razão pela qual a alteração não é salva pode ser, se você fizer uma reinicialização forçada ou um ciclo de energia, em vez de reboot
.
Você pode ver se o sistema salva a alteração emitindo /sbin/auto-backup.sh
, o que salva o arquivo imediatamente no bootbank (veja Como persistir alterações de configuração no ESXi 4.x / 5.x , que ainda se aplica à v6.x).
2. Desativar autenticação de senha
Meu ESXi também está em uma rede pública. Em /etc/ssh/sshd_config
eu mudei
PermitRootLogin yes
para
PermitRootLogin prohibit-password
PubkeyAuthentication yes
Isso já reduz a chance de que o usuário root seja bloqueado para tentativas inválidas de senha (já que as senhas não são permitidas para usuários root em primeiro lugar). Além disso, a autenticação baseada em chave é considerada muito mais segura (se você mantiver as chaves com segurança!) Do que a senha auth.
Se você quiser desabilitar completamente a autenticação por senha, também precisará definir
UsePAM no
PasswordAuthentication no
No entanto, essas alterações são permanentes (como /etc/ssh/sshd_config
é salvo com /sbin/auto-backup.sh
) e imediato (não é reiniciado se sshd, já que o sshd é lançado pelo inetd ). Assim, não há como mudanças não permanentes aqui.
3. Firewall
Se você ainda quiser alterar as regras de firewall, poderá criar um arquivo ssha_from_anywhere.xml
com conteúdo
<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>
em um armazenamento persistente e copie-o para /etc/vmware/firewall/
durante a inicialização (novamente em /etc/rc.local.d/local.sh
). Em seguida, altere sua regra de firewall existente com o vSphere Client para permitir apenas o seu endereço local.
Quando o sistema for reinicializado, a porta ssh estará aberta ao mundo. Em seguida, você precisaria fazer login e excluir o /etc/vmware/firewall/ssha_from_anywhere.xml
e recarregar o firewall:
esxcli network firewall refresh
No entanto, antes de fazer isso, você teria que ajustar o endereço IP que tem permissão para se conectar ao ssh. Você provavelmente desejaria fazer isso no cliente vSphere novamente, ou diretamente em /etc/vmware/firewall/service.xml
. No primeiro caso (se você não desativou a interface do cliente vSphere), todo o procedimento parece sem sentido, já que você poderia simplesmente efetuar login com o cliente vSphere e alterar o endereço IP.
As alterações feitas no vSphere Client são refletidas no arquivo /etc/vmware/esx.conf
, por exemplo,
/firewall/services/sshServer/allowedip[0000]/ipstr = "192.168.1.1"
/firewall/services/sshServer/allowedip[0001]/ipstr = "192.168.2.0/24"
Embora eu saiba que esse arquivo é mantido durante as reinicializações, não sei como as alterações são ativadas. Talvez você possa editar o arquivo e, em seguida, reboot
? E após essa segunda reinicialização, remova /etc/vmware/firewall/ssha_from_anywhere.xml
e recarregue o firewall.
Fontes
- Com que frequência o ESXi escreve para o disco de inicialização?
- Como persistir alterações de configuração no ESXi 4.x / 5. x
- Alterar porta SSH no VMware ESXi
- pesquisa, tentativa e erro.
Boa sorte!
Martin