Команда ssh-copy-id – это полезный инструмент для простой настройки аутентификации на основе SSH-ключей между серверами. Однако иногда при попытке использовать эту команду может возникнуть ошибка "/usr/bin/ssh-copy-id: error: no identities found". Это руководство проведет вас через шаги по устранению неполадок и решению этой проблемы, обеспечивая бесперебойный процесс аутентификации на основе SSH-ключей. К концу этой лабораторной работы вы поймете, как работает аутентификация по SSH-ключам, и сможете правильно настроить ее в своих системах.
Чтения мало — пора писать код.
Понимание аутентификации по SSH-ключам
Прежде чем мы углубимся в устранение ошибки "no identities found" (не найдено удостоверений), важно понять, что такое аутентификация по SSH-ключам и как она работает.
Что такое аутентификация по SSH-ключам?
Аутентификация по SSH-ключам (Secure Shell key authentication) – это метод безопасного входа в удаленные системы без необходимости каждый раз вводить пароль. Он использует пару криптографических ключей:
Приватный ключ (private key), который остается на вашей локальной машине
Публичный ключ (public key), который копируется на удаленный сервер
Когда вы пытаетесь подключиться к удаленному серверу, ваш SSH-клиент использует ваш приватный ключ для создания подписи. Сервер проверяет эту подпись, используя ваш публичный ключ, хранящийся в его файле authorized_keys. Если подпись действительна, вы получаете доступ без необходимости ввода пароля.
Что такое ssh-copy-id?
Команда ssh-copy-id – это утилита, которая упрощает процесс копирования вашего публичного ключа на удаленный сервер. Она добавляет ваш публичный ключ в файл ~/.ssh/authorized_keys на удаленном сервере, что позволяет осуществлять аутентификацию без пароля в будущих соединениях.
Давайте проверим, есть ли у вас уже какие-либо SSH-ключи в вашей системе. Выполните следующую команду в вашем терминале:
ls -la ~/.ssh
Если вы не видите никаких файлов или каталог .ssh не существует, не волнуйтесь - мы создадим все на следующем шаге.
Генерация SSH-ключей
Если у вас нет SSH-ключей или вы хотите создать новые, вы можете сгенерировать их с помощью команды ssh-keygen. Это часто является первым шагом в решении ошибки "no identities found" (не найдено удостоверений).
Создание новой пары SSH-ключей
Давайте сгенерируем новую пару SSH-ключей, выполнив следующую команду:
-b 4096 указывает длину бита (более сильное шифрование)
-C добавляет комментарий (обычно адрес электронной почты), чтобы помочь идентифицировать ключ
Когда вы запустите эту команду, вам будет предложено:
Введите местоположение файла для сохранения ключа (нажмите Enter, чтобы использовать местоположение по умолчанию ~/.ssh/id_rsa)
Введите парольную фразу (passphrase) (вы можете нажать Enter дважды, чтобы не использовать парольную фразу, но ее использование добавляет дополнительный уровень безопасности)
Вывод должен выглядеть примерно так:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/labex/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/labex/.ssh/id_rsa
Your public key has been saved in /home/labex/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:abcdefghijklmnopqrstuvwxyz1234567890ABCD [email protected]
The key's randomart image is:
+---[RSA 4096]----+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----[SHA256]-----+
Проверка создания SSH-ключа
Теперь давайте проверим, что ключи были созданы правильно:
ls -la ~/.ssh
Теперь вы должны увидеть в выводе как приватный ключ (id_rsa), так и публичный ключ (id_rsa.pub):
Давайте также посмотрим на содержимое вашего файла публичного ключа:
cat ~/.ssh/id_rsa.pub
Вывод должен быть одной строкой, начинающейся с ssh-rsa, за которой следует длинная строка символов и заканчивающаяся вашим адресом электронной почты или комментарием.
Теперь, когда мы подтвердили, что наши SSH-ключи существуют, мы можем перейти к следующему шагу: устранению неполадок и решению ошибки "no identities found" (не найдено удостоверений).
Прокачай навыки на практике.
Понимание и устранение ошибки "No Identities Found" (Не найдено удостоверений)
Теперь, когда у нас есть наши SSH-ключи, давайте разберемся, почему возникает ошибка "no identities found" (не найдено удостоверений) и как ее исправить.
Распространенные причины ошибки
Ошибка "no identities found" (не найдено удостоверений) обычно возникает по одной из следующих причин:
SSH-ключи не существуют
SSH-ключи находятся не в местоположении по умолчанию
SSH-ключи имеют неправильные разрешения
Команда ssh-copy-id не может найти ни одного публичного ключа для использования
Поскольку мы уже подтвердили, что наши SSH-ключи существуют в местоположении по умолчанию, давайте проверим разрешения.
Проверка и исправление разрешений SSH-ключей
SSH очень щепетилен в отношении разрешений файлов из соображений безопасности. Выполните следующую команду, чтобы проверить разрешения вашего каталога .ssh и его содержимого:
ls -la ~/.ssh
Для надлежащей безопасности:
Каталог .ssh должен иметь разрешения 700 (rwx------)
Приватный ключ (id_rsa) должен иметь разрешения 600 (rw-------)
Публичный ключ (id_rsa.pub) должен иметь разрешения 644 (rw-r--r--)
Если ваши разрешения неверны, вы можете исправить их с помощью следующих команд:
-i указывает файл идентификации (публичный ключ) для использования
username – ваше имя пользователя на удаленном сервере
remote_host – имя хоста или IP-адрес удаленного сервера
Для нашей лабораторной среды мы будем имитировать это, используя локальную машину. Запустите:
ssh-copy-id -i ~/.ssh/id_rsa.pub labex@localhost
Вам будет предложено ввести пароль удаленного пользователя.
Откройте окно терминала в среде рабочего стола (desktop environment), только в терминале среды рабочего стола будут установлены переменные среды.
Чтобы получить пароль, выполните следующую команду.
printenv | grep PASSWORD
Примечание: Вы должны выполнить эту команду в терминале среды рабочего стола, а не в терминале, который вы открыли из верхней строки меню.
Эта команда отобразит все переменные среды, содержащие "PASSWORD". Найдите строку, в которой говорится LABEX_PASSWORD=.... Символы после знака равенства – это ваш пароль.
Вы должны ввести этот пароль, и публичный ключ будет скопирован на удаленный сервер.
Если вы видите сообщение типа "Number of key(s) added: 1" (Количество добавленных ключей: 1), значит, ваш ключ был успешно скопирован.
Проверка аутентификации по SSH-ключу
Теперь, когда мы устранили ошибку "no identities found" (не найдено удостоверений) и успешно скопировали наш SSH-ключ на удаленный сервер, давайте проверим, что аутентификация по SSH-ключу работает правильно.
Тестирование аутентификации по SSH-ключу
В реальной среде вы бы протестировали аутентификацию по SSH-ключу, подключившись к удаленному серверу:
ssh username@remote_host
Если ваш SSH-ключ настроен правильно, вы должны иметь возможность войти в систему без ввода пароля (если только вы не установили парольную фразу (passphrase) для своего ключа, в этом случае вам нужно будет ее ввести).
Для нашей лабораторной среды мы можем протестировать, попытавшись подключиться по SSH к localhost:
ssh labex@localhost
Если вы получите запрос с просьбой подтвердить соединение (потому что localhost нет в вашем файле known hosts), введите yes.
Вы можете увидеть сообщение, подобное следующему:
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:abcdefghijklmnopqrstuvwxyz1234567890ABCD.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Если вас попросят ввести пароль, это означает, что аутентификация по SSH-ключу еще не работает. Но если вы успешно войдете в систему без ввода пароля, ваша аутентификация по SSH-ключу работает правильно.
Распространенные проблемы и решения при аутентификации по SSH-ключу
Если у вас все еще возникают проблемы с аутентификацией по SSH-ключу, вот некоторые распространенные проблемы и решения:
Конфигурация SSH-сервера (SSH Server Configuration): SSH-сервер должен быть настроен на разрешение аутентификации по открытому ключу (public key authentication). Обычно это включено по умолчанию, но вы можете проверить, изучив файл /etc/ssh/sshd_config на удаленном сервере:
grep PubkeyAuthentication /etc/ssh/sshd_config
Он должен показывать PubkeyAuthentication yes.
Владение файлами (File Ownership): Ваш домашний каталог и каталог .ssh должны принадлежать вам:
ls -ld ~ ~/.ssh
Оба должны показывать ваше имя пользователя в качестве владельца.
Отладка SSH-соединения (Debug SSH Connection): Вы можете использовать подробный флаг (verbose flag) для отладки SSH-соединений:
ssh -v labex@localhost
Это покажет подробную информацию о процессе аутентификации, которая может помочь выявить проблему.
Рекомендации по управлению SSH-ключами (SSH Key Management Best Practices)
Вот некоторые рекомендации по управлению SSH-ключами:
Используйте парольную фразу (Use a passphrase): При создании SSH-ключа рассмотрите возможность использования парольной фразы для повышения безопасности.
Разные ключи для разных серверов (Different keys for different servers): Для повышения безопасности рассмотрите возможность использования разных ключей для разных серверов или целей.
Резервное копирование ключей (Backup your keys): Храните резервные копии своих SSH-ключей в безопасном месте.
Регулярно обновляйте ключи (Regularly rotate keys): Для конфиденциальных сред рассмотрите возможность периодического обновления своих SSH-ключей.
Следуя этим шагам и рекомендациям, вы можете обеспечить надежную и безопасную работу аутентификации по SSH-ключу.
Твоя виртуальная машина уже ждёт.
Итог (Summary)
В этой лабораторной работе вы научились устранять неполадки и разрешать ошибку "no identities found" (не найдено удостоверений) при использовании команды SSH copy-id. Мы рассмотрели:
Понимание аутентификации по SSH-ключу и принципов работы команды ssh-copy-id
Генерация пар SSH-ключей с помощью команды ssh-keygen
Проверка и исправление разрешений SSH-ключей
Правильное использование ssh-copy-id для копирования вашего открытого ключа (public key) на удаленный сервер
Тестирование и проверка аутентификации по SSH-ключу
Распространенные проблемы и рекомендации по управлению SSH-ключами
Обладая этими навыками, вы теперь можете настраивать безопасные SSH-соединения между системами без пароля, что необходимо для эффективного администрирования системы и автоматизации. Аутентификация по SSH-ключу не только обеспечивает лучшую безопасность, чем аутентификация по паролю, но и упрощает процесс входа в систему для законных пользователей.
Помните, что надлежащая защита ваших SSH-ключей имеет решающее значение, поскольку они обеспечивают прямой доступ к вашим системам. Всегда храните свои закрытые ключи (private keys) в безопасности и рассмотрите возможность использования парольных фраз (passphrases) для дополнительной защиты.
"
I like that as we progress we recap on things and just build a little at a time to truly start to develop a pathway in our brains to this knowledge."
— Kimberly Head
"
Easy to understand instructions and follow through with the VM activities. That is making practical learning easy.
"