Эту проблему можно решить, подключив загрузочный диск к другому экземпляру.
ШАГ 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