Конфигурация ssh файла Esxi изменяется, чтобы сделать ее непостоянной и постоянной

У меня есть выделенный сервер с esxi. Я добавил дополнительного пользователя в esxi и добавил его ключи в / etc / keys / keys-user / authorized_keys

Затем я перезагрузил сервер, и эта папка ключей исчезла. Затем я обнаружил, что мне нужно скопировать ключи в какое-то постоянное хранилище, а затем поместить команду в /etc/rc.local.d/local.sh , но я заметил, что даже этот файл перезаписывается после перезагрузки. Итак, мои вопросы:

  1. В какой файл мне нужно записать, чтобы он сохранялся после перезагрузки
  2. Теперь я хочу отключить аутентификацию по паролю. Я знаю, что могу сделать это в sshd_config. но я хочу, чтобы он был непостоянным. то есть я хочу отключить его вручную, и если я перезагружусь, я хочу, чтобы он был сброшен обратно к исходному файлу с включенной аутентификацией.

ОБНОВЛЕНИЕ У меня есть правила брандмауэра, согласно которым только мой домашний IP-адрес имеет доступ к esxi и больше ни к чему. Теперь, на всякий случай, я не могу подключиться, а затем я хочу подключиться к ssh и отключить брандмауэр на некоторое время и, возможно, изменить правило брандмауэра для нового IP-адреса, а затем снова включить брандмауэр. вот почему я хотел доступ по ssh. Несколько дней назад у меня была заблокирована учетная запись root из-за грубой силы. так что на всякий случай я хочу иметь дополнительного пользователя, с которым я могу использовать ssh, чтобы исправить проблему. Я включил аутентификацию на основе ключей ssk, но она общедоступна. поэтому я хочу ограничить ssh только домашним IP-адресом, и в случае крайней необходимости, если мой IP-адрес изменится, я могу перезагрузить esxi, чтобы аутентификация на основе пароля работала, а затем я могу исправить брандмауэр. Я домашний пользователь, поэтому не могу позволить себе аппаратный брандмауэр на esxi.

У меня есть pfsense для внутренних машин. У меня нет общедоступных сайтов, только материалы моих лабораторий. Я не Я не хочу ставить esxi за pfsense, потому что, если что-то не так в pfsense, я буду заблокирован, и у меня не будет другого выхода, кроме переустановки всего

2
задан 21 November 2018 в 18:53
1 ответ

1. Сохранение ключей SSH

По моему опыту, /etc/rc.local.d/local.sh на самом деле сохраняется после перезагрузки.Возможно, стоит упомянуть, что файл сохраняется только один раз в час или во время полного выключения (см. Как часто ESXi записывает на загрузочный диск? ).

Итак, одна из причин, по которой это изменение - не может быть сохранено, если вы выполните полный сброс или перезагрузку, а не перезагрузку .

Вы можете увидеть, сохранила ли система изменения, выполнив /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

Однако перед тем, как это сделать, вам придется настроить 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"

Хотя я знаю, что этот файл сохраняется при перезагрузке, я не уверен, как активируются изменения. Может можно отредактировать файл и потом перезагрузить ? И после этой второй перезагрузки удалите /etc/vmware/firewall/ssha_from_anywhere.xml и перезагрузите брандмауэр.

Источники


Удачи!
Мартин

3
ответ дан 3 December 2019 в 10:35

Теги

Похожие вопросы