У меня есть выделенный сервер с esxi. Я добавил дополнительного пользователя в esxi и добавил его ключи в /etc/keys/keys-user/authorized_keys
Затем я перезагрузил сервер, и эта папка с ключами исчезла. Затем я обнаружил, что мне нужно скопировать ключи в какое-то постоянное хранилище, а затем ввести команду в /etc/rc.local.d/local.sh
но я видел, что даже этот файл перезаписывается после перезагрузки. так что мои вопросы
ОБНОВЛЕНИЕ Я установил правила брандмауэра, согласно которым только мой домашний IP-адрес имеет доступ к esxi и ни к чему другому. Теперь, на всякий случай, когда я не могу подключиться, я хочу подключиться к ssh и отключить брандмауэр на некоторое время и, возможно, изменить правило брандмауэра для нового IP-адреса, а затем снова включить брандмауэр. вот почему я хотел доступ по ssh. Несколько дней назад у меня была заблокирована учетная запись root из-за чьей-то грубой силы. так что на всякий случай я хочу иметь дополнительного пользователя, с которым я могу использовать ssh, чтобы исправить проблему. Я включил аутентификацию на основе ключей ssk, но она общедоступна. поэтому я хочу ограничить ssh только домашним IP-адресом, и в случае крайней необходимости, если мой IP-адрес изменится, я могу перезагрузить esxi, чтобы сработала аутентификация на основе пароля, а затем я могу исправить брандмауэр. Я домашний пользователь, поэтому не могу позволить себе аппаратный брандмауэр на esxi.
У меня есть pfsense для внутренних машин. У меня нет общедоступных сайтов, только материалы моих лабораторий. Я не хочу ставить esxi за pfsense, потому что если что-то не так в pfsense, я буду заблокирован, и у меня не будет другого выхода, кроме повторной установки всего
По моему опыту, /etc/rc.local.d/local.sh
на самом деле сохраняется после перезагрузки. Возможно, стоит упомянуть, что файл сохраняется только один раз в час или при полном завершении работы (см. Как часто ESXi записывает на загрузочный диск?).
Таким образом, одна из причин, по которой изменение не сохраняется, может заключаться в том, что вы выполняете полный сброс или цикл питания, а не reboot
.
Вы можете увидеть, сохраняет ли система изменение, выполнив /sbin/auto-backup.sh
, который немедленно сохраняет файл в загрузочный банк (см. Как сохранить изменения конфигурации в ESXi 4.x / 5.x, который по-прежнему применяется к v6.x).
Мой 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). Таким образом, здесь нет возможности непостоянных изменений.
Если вы все еще хотите изменить правила брандмауэра, вы можете создать файл 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
Тем не мение, перед при этом вам придется настроить IP-адрес, который разрешен для подключения к ssh. Возможно, вы захотите сделать это снова в клиенте vSphere или непосредственно в /etc/vmware/firewall/service.xml
. В первом случае (если вы не отключили клиентский интерфейс vSphere) вся процедура кажется бессмысленной, поскольку вы можете просто войти в систему с помощью клиента vSphere и изменить IP-адрес.
Изменения, внесенные в клиент vSphere, отражаются в /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
и перезагрузите брандмауэр.
Удачи!
Мартин