Облачная платформа Google, разрешение ssh экземпляра VM - PullRequest
0 голосов
/ 10 декабря 2018

В моей облачной платформе Google, например, vm, я случайно изменил разрешение /etc/ssh, и теперь я не могу получить к нему доступ с помощью ssh или filezilla.

Журнал выглядит следующим образом:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/etc/ssh/ssh_host_ed25519_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
key_load_private: bad permissions

Единственное, к чему я могу получить доступ, это gcloud command или serial console.

Я знаю, что мне нужно изменить разрешение каталога обратно на 644 или 400, но у меня естьне знаю, как я не могу получить доступ к ssh.

Как изменить разрешение без доступа к ssh?

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 10 декабря 2018

Эту проблему можно решить, подключив загрузочный диск к другому экземпляру.

ШАГ 1:

Завершите работу вашего экземпляра с проблемой SSH.Войдите в консоль Google Cloud.Перейдите в Compute Engine -> Экземпляры виртуальной машины.Нажмите на свой экземпляр и запишите имя «загрузочного диска».Это будет первый диск в разделе «Загрузочный диск и локальные диски».

ШАГ 2:

Создайте снимок загрузочного диска, прежде чем предпринимать какие-либо дальнейшие действия.Пока еще в Compute Engine -> Диск.Нажмите на свой загрузочный диск.Нажмите «CREATE SNAPSHOT».

ШАГ 3:

Создайте новый экземпляр в той же зоне.Микроэкземпляр будет работать.

ШАГ 4:

Откройте приглашение Cloud Shell (это также работает с вашего рабочего стола, если gcloud настроен).Выполните эту команду.Замените NAME именем вашего экземпляра (неработающая система SSH), а DISK - именем загрузочного диска, а ZONE - зоной, в которой находится система:

gcloud compute instance detach-disk NAME --disk=DISK --zone=ZONE

Убедитесь, что предыдущая команда не сообщила об ошибке.

ШАГ 5:

Теперь мы подключим этот диск к новому созданному вами экземпляру.

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

Перейдите в Compute Engine -> Экземпляры виртуальной машины.Нажмите на свой экземпляр.Нажмите Изменить.В разделе «Дополнительные диски» нажмите «Добавить элемент».В качестве имени введите / выберите диск, который вы отсоединили от сломанного экземпляра.Нажмите Сохранить.

ШАГ 6:

SSH в ваш новый экземпляр с подключенными обоими дисками.

ШАГ 7:

Следуйте этим шагам внимательно.Мы подключим второй диск к корневой файловой системе.Затем измените разрешения для каталога и содержимого / mnt / repair / etc / ssh.

  • Станьте суперпользователем.Выполнить sudo -s
  • Выполнить df.Убедитесь, что /dev/sdb1 не смонтирован.
  • Создайте каталог для точки монтирования: mkdir /mnt/repair
  • Смонтируйте второй диск: mount /dev/sdb1 /mnt/repair
  • Измените каталоги: cd /mnt/repair/etc
  • Установить разрешения для /etc/ssh (обратите внимание на относительные пути здесь): chmod 755 ssh
  • Изменить каталоги: cd ssh
  • Выполнить: chmod 644 *.pub
  • Выполнить: chmod 400 *key
  • ssh_config и sshd_config все равно должно быть 644. Если не исправить их тоже.
  • Выключить систему восстановления: halt

ШАГ 8:

Теперь выполните процедуру в обратном порядке и переместите второй диск обратно в исходный экземпляр и снова подключите.Запустите свой экземпляр и подключитесь через SSH.

Примечание. Для повторного подключения загрузочного диска необходимо использовать gcloud с параметром -boot.

gcloud beta compute instances attach-disk NAME --disk=DISK --zone=ZONE --boot
...