Вопрос или проблема
На kubuntu 22.04 я переустановил ssh-keygen:
sudo ssh-keygen
Генерация пары открытого/закрытого ключей rsa.
Введите файл для сохранения ключа (/root/.ssh/id_rsa):
Создан каталог '/root/.ssh'.
Введите пароль (оставьте пустым, если пароль не нужен):
Введите тот же пароль еще раз:
Ваши данные сохранены в /root/.ssh/id_rsa
Ваш открытый ключ сохранен в /root/.ssh/id_rsa.pub
Отпечаток ключа:
SHA256:Q40/XXXXXXXXXXXXXXXXX/XXXXXXX root@master-at-home
Случайное изображение ключа:
+---[RSA 3072]----+
|... .. |
|oo.+o.. o |
|.+.o=o+ = . |
| oo.o.= B |
| .. .oS B |
| o=.o. + |
| .E.+ o |
| .*+ . . |
| .o*B*o. |
Но файлы были сгенерированы в /root/.ssh/id_rsa.pub
, а не в /home/master/.ssh
, где master
— текущий пользователь.
Не уверен, могу ли я переместить файлы вручную или изменить свою команду в консоли?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
master@master-at-home:/mnt/_work_sdb8/wwwroot/lar/CurrenciesXM$ ls -la ~/.ssh
всего 24
drwxr-xr-x 2 root root 4096 жов 21 16:17 .
drwxr-x--- 31 master master 4096 жов 21 16:51 ..
-rwxr-xr-x 1 root root 2610 жов 29 2021 id_rsa
-rwxr-xr-x 1 root root 574 жов 29 2021 id_rsa.pub
-rwxr-xr-x 1 root root 3556 жов 21 16:17 known_hosts
-rwxr-xr-x 1 root root 3998 лис 22 2023 known_hosts.old
master@master-at-home:/mnt/_work_sdb8/wwwroot/lar/CurrenciesXM$ id
uid=1000(master) gid=1000(master) groups=1000(master),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),122(lpadmin),133(lxd),134(sambashare)
master@master-at-home:/mnt/_work_sdb8/wwwroot/lar/CurrenciesXM$ sudo -s
[sudo] пароль для master:
root@master-at-home:/mnt/_work_sdb8/wwwroot/lar/CurrenciesXM# id
uid=0(root) gid=0(root) groups=0(root),137(docker)
Команду ssh-keygen
следует выполнять как обычному пользователю, а не с правами root
.
Владелец и группа каталога .ssh
и файлов в этом каталоге — root:root
. Должно быть master:master
. Поэтому вы получите ошибки, когда будете выполнять ssh-keygen
как обычный пользователь.
Кроме того, у файлов установлены исполняемые биты, что бесполезно. Самая критическая точка заключается в том, что файл закрытого ключа id_rsa
доступен для чтения всеми.
Вероятно, вы сделали что-то неправильно в прошлом.
Я предлагаю следующие команды для исправления прав собственности и разрешений:
sudo chown -R master:master ~/.ssh
chmod -R o-rwx ~/.ssh
chmod -R og-w ~/.ssh
chmod og-r ~/.ssh/id_rsa
chmod a-x ~/.ssh/*
Пояснение:
- изменение владельца (это требует
sudo
, последующие команды можно выполнять подmaster
.) - удалить все права доступа для других
- удалить права на запись для группы (необязательно в данном случае)
- удалить права на чтение для группы и других от закрытого ключа
- удалить исполняемые биты у всех файлов
Если были другие файлы закрытого ключа (id_*
без .pub
), права для них должны быть такими же, как для id_rsa
.
Ответ или решение
Вопрос о том, почему файлы SSH-ключей были созданы в подкаталоге root, а не в домашнем каталоге обычного пользователя, требует детального разбора и понимания как работы утилиты ssh-keygen
, так и управления правами доступа в Linux-системах.
1. Понимание контекста
Пользователь на Kubuntu 22.04 выполнил команду sudo ssh-keygen
, что является ключевым моментом. Использование sudo
запускает команду от имени суперпользователя (root), и, соответственно, все создаваемые файлы будут принадлежать пользователю root. Следовательно, ключи были созданы в директории /root/.ssh/
, что видно из вывода команды:
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
2. Почему это неправильно?
Создание SSH-ключей от имени root может привести к нескольким проблемам:
-
Проблема с доступом: Когда вы пытаетесь выполнить SSH-соединения под обычным пользователем (
master
), он не сможет получить доступ к файлам ключей, поскольку они находятся в директории, защищенной правами доступа root. Это создает трудности, когда надо использовать ключи для аутентификации. -
Безопасность: Один из главных аспектов безопасности заключается в том, что приватные ключи не должны быть доступны другим пользователям. Если ключи находятся в директории root, это подразумевает, что только суперпользователь может с ними работать. На практике это может привести к большому количеству потенциальных проблем с доступом и управлением.
3. Как исправить ситуацию?
Исправить возникшую проблему можно несколькими командами, чтобы изменить права на файлы и их владельца на правильные для пользователя master:
Прежде всего, необходимо изменить владельца .ssh
:
sudo chown -R master:master ~/.ssh
Затем стоит настроить правильные разрешения для файлов:
chmod -R o-rwx ~/.ssh # Убрать права на чтение, запись и выполнение для других
chmod -R og-w ~/.ssh # Убрать права на запись для группы и других
chmod og-r ~/.ssh/id_rsa # Убрать права на чтение для группы и других у приватного ключа
chmod a-x ~/.ssh/* # Убрать разрешения на выполнение для всех файлов
Эта последовательность команд обеспечит:
- Изменение владельца: Файлы и папка теперь будут принадлежать пользователю
master
, что позволит ему управлять ключами. - Безопасность: Установленные ограничения гарантируют, что только пользователь
master
имеет доступ к приватному ключу, что значительно улучшает безопасность.
4. Рекомендации по использованию ssh-keygen
Для избегания подобных ситуаций в будущем рекомендуется всегда запускать ssh-keygen
как обычный пользователь, без использования sudo
:
ssh-keygen
Это особенно важно, если вы не хотите иметь дела с проблемами прав доступа в будущем. Убедитесь, что вы работаете в своей домашней директории, чтобы гарантировать, что файлы ключей будут созданы корректно.
Заключение
Понимание управления доступом и ролями пользователей в Linux — критически важное условие для безопасной и эффективной работы с SSH. Это позволяет избежать множества проблем, связанных с доступом и безопасностью. Убедитесь, что вы всегда работаете с ключами и утилитами от имени обычных пользователей, чтобы сохранить контроль и безопасность ваших данных.