Назад | Перейти на главную страницу

Изменения конфигурации 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, я буду заблокирован, и у меня не будет другого выхода, кроме повторной установки всего

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

Тем не мение, перед при этом вам придется настроить 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 и перезагрузите брандмауэр.

Источники


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