Вопрос или проблема
Я добавил свой ~/.ssh/id_rsa.pub
в файл ‘authorized_keys’ на своем сервере, чтобы я мог выполнить ssh user@myserver -p port
и успешно войти на сервер. Однако, когда я делаю
ssh-keygen -f id_rsa.pub -m 'PEM' -e > id_rsa.pem
и затем использую
ssh user@myserver -p port -i key.pem
я получаю:
Load key "key.pem": invalid format
user@myserver: Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
Не используйте PEM. Я не вижу, зачем вам это делать. Возможно, вам стоит расширить свой вопрос с некоторой логикой?
Вам следует сделать:
- ssh-keygen
- ssh-copy-id user@server
- ssh на сервер
Ответ или решение
Как сгенерировать файл .pem для SSH?
Если вы работали с SSH и аутентификацией с помощью ключей, то, вероятно, вы сталкивались с форматом PEM (Privacy-Enhanced Mail). Он используется для хранения и передачи криптографических ключей. Если ваша задача заключается в создании файла .pem для SSH, выполните следующие шаги.
Шаг 1: Генерация SSH ключей
Во-первых, вы можете сгенерировать новый набор SSH ключей с помощью следующей команды:
ssh-keygen -t rsa -b 2048 -C "your_email@example.com"
Здесь параметры следующие:
-t rsa
: выбирает тип ключа (RSA).-b 2048
: устанавливает длину ключа в 2048 бит.-C "your_email@example.com"
: позволяет добавить комментарий, который поможет вам идентифицировать ключ.
После выполнения команды вам будет предложено ввести путь для сохранения ключа. По умолчанию используется ~/.ssh/id_rsa
. Если вы хотите сохранить его под другим именем, уточните его.
Шаг 2: Создание файла .pem
Полученный файлы будут состоять из двух частей: закрытого (например, id_rsa
) и открытого (например, id_rsa.pub
). Чтобы получить .pem файл, вам нужно конвертировать закрытый ключ в формат PEM. Этот файл будет использоваться для подключения к вашему серверу.
Для этого выполните следующую команду:
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
При этом ожидается ввод текущего пароля (если он задействован) и, при необходимости, нового пароля. После выполнения данной команды ваш закрытый ключ будет сохранен в формате PEM.
Шаг 3: Удостоверение, что файл имеет правильный доступ
Файл ключа должен иметь соответствующие разрешения, чтобы SSH мог его использовать. Убедитесь, что файлы имеют доступ только для чтения пользователю:
chmod 600 ~/.ssh/id_rsa
Шаг 4: Копирование открытого ключа на сервер
Если вы еще не добавили открытый ключ на удаленный сервер, вы можете использовать команду ssh-copy-id
. Это упростит процесс добавления ключа в файл authorized_keys
на сервере. Выполните:
ssh-copy-id user@myserver -p port
где user
— это имя пользователя на сервере, а myserver
— это IP-адрес или доменное имя вашего сервера.
Шаг 5: Подключение к серверу
Теперь, когда у вас есть закрытый ключ в формате PEM и открытый ключ добавлен на сервер, вы можете подключиться следующим образом:
ssh user@myserver -p port -i ~/.ssh/id_rsa
Примечание
Ваша первоначальная попытка конвертации открытого ключа (id_rsa.pub
) в формат .pem через команду:
ssh-keygen -f id_rsa.pub -m 'PEM' -e > id_rsa.pem
может привести к ошибке, так как вы пытались использовать открытый ключ для аутентификации, что не является корректным подходом. Убедитесь, что вы используете закрытый ключ в формате PEM для подключения к серверу.
Заключение
Теперь вы знаете, как генерировать файл .pem для SSH, а также как правильно настраивать SSH ключи для безопасного доступа к вашему серверу. Следуя этим шагам, вы сможете избежать ошибок и обеспечить надежную аутентификацию. Если у вас возникнут дополнительные вопросы, не стесняйтесь и задавайте их!