Как создать ключ для авторизации по SSH и добавить его на сервер?
SSH-ключи используются для идентификации клиента при подключении к серверу по SSH-протоколу. Используйте этот способ вместо аутентификации по паролю.
SSH-ключи представляют собой пару — закрытый и открытый ключ. Закрытый должен храниться в закрытом доступе у клиента, открытый отправляется на сервер и размещается в файле authorized_keys.
Создание SSH-ключей в Linux на примере CentOS
На клиентской стороне должен быть установлен пакет ssh (openssh). На серверах FirstVDS с шаблонами по умолчанию необходимое ПО уже установлено.
yum -y install openssh-server openssh-clients
На клиентском компьютере в командной строке выполните команду генерации ключей:
ssh-keygen
Введите путь файла, в который будут помещены ключи. Каталог по умолчанию указан в скобках, в примере /домашний_каталог/.ssh/id_rsa. Если хотите оставить расположение по умолчанию, нажмите Enter.
Пароль (passphrase)
Успешно сгенерировав пару ключей, вы увидите уведомление:
Открытый ключ хранится в файле /домашний_каталог/.ssh/id_rsa.pub
, закрытый — /домашний_каталог/.ssh/id_rsa
.
Скопируйте открытый ключ на сервер в файл /домашний_каталог/.ssh/authorized_keys
. Одной строкой:
cat ~/.ssh/id_rsa.pub | ssh [email protected]адрес-сервера 'cat >> ~/.ssh/authorized_keys'
Или откройте этот файл на сервере редактором vi и вставьте строку с открытым ключом после ssh-rsa.
Ещё один способ скопировать ключ в authorized_keys — команда echo, которая помещает строку в конец файла.
echossh-rsa строка-публичного-ключа >> /root/.ssh/authorized_keys
Теперь можно отключить на сервере аутентификацию по паролю и использовать только SSH-ключи.
Создание SSH-ключей на Windows с PuTTYgen
Если вы используете ОС Windows, то подключиться по SSH к вашему (Linux) серверу можно через PuTTY или OpenSSH. Генерация ключей в этом случае выполняется также при помощи этих программ. В примере мы используем клиент PuTTY.
Запустите приложение PuTTYgen
, которое устанавливается вместе с PuTTY.
Выберите тип ключа SSh3-RSA и нажмите Generate
.
В процессе генерации ключей несколько раз произвольно проведите мышкой по экрану приложения для создания случайных величин, используемых для ключей.
После завершения создания ключей открытый ключ выводится на экран, закрытый хранится в памяти приложения. Чтобы сохранить эти ключи нажмите Save public key
и Save private key
. Укажите расположение файлов с ключами.
При сохранении закрытого ключа, если не заполнено поле Key passphrase
, появится запрос «Хотите ли вы сохранить ключ без секретной фразы?»
Теперь открытый ключ необходимо скопировать на сервер в файл authorized_keys. Используйте WinSCP или другой клиент для работы с файлами на удалённом Linux-сервере. Вы можете скопировать файл с открытым ключом целиком на сервер, чтоб его копия хранилась в папке .ssh
Откройте файл authorized_keys через WinSCP и файл, в который вы сохранили открытый ключ (public), на локальном компьютере текстовым редактором. Скопируйте значение ключа, сохраните и закройте файл в WinSCP.
При запуске PuTTY укажите путь к закрытому ключу на локальном компьютере. Для этого во вкладке Connections → Auth
выберите необходимый путь.
Теперь можно отключить на сервере аутентификацию по паролю и использовать только SSH-ключи.
Отключение аутентификации по паролю
Подключитесь к серверу по SSH, используя пароль, и откройте файл sshd_config для редактирования.
vi /etc/ssh/sshd_config
Убедитесь, что указан правильный путь к открытым ключам SSH, поставьте значение параметра PasswordAuthentication no
.
Перезапустите службу sshd.
service sshd restart
Подключитесь к серверу по SSH без использования пароля. Например, запустите PuTTY, проверьте, что во вкладке Connections -> Auth содержится путь к закрытому ключу и откройте подключение.
В случае успешной аутентификации по SSH-ключу вы получите доступ к командной строке сервера и сообщение вида Authenticating with public key «rsa-key-20170510», где rsa-key-20170510 — имя применённого закрытого ключа, указанное вами в файле authorized_keys.
Как сгенерировать SSH-ключ для доступа на сервер – Vscale Community
Использование SSH-ключей —простой и надёжный способ обеспечения безопасности соединения с сервером. В отличие от пароля, взломать SSH-ключ практически невозможно. Сгенерировать SSH-ключ очень просто.
Откройте терминал и выполните команду:
$ ssh-keygen -t rsa
На консоль будет выведен следующий диалог:
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Нажмите на клавишу Enter. Далее система предложит ввести кодовую фразу для дополнительной защиты SSH-подключения:
Enter passphrase (empty for no passphrase):
Этот шаг можно пропустить. При ответе на этот и следующий вопрос просто нажмите клавишу Enter.
После этого ключ будет создан, а на консоль будет выведено следующее сообщение:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
476:b2:a8:7f:08:b4:c0:af:81:25:7e:21:48:01:0e:98 [email protected]The key's randomart image is:
+--[ RSA 2048]----+
|+.o. |
|ooE |
|oo |
|o.+.. |
|.
+.+.. S . |
|....+ o + |
| .o .... |
| . .. . |
| .... |
+-----------------+
Далее выполните в терминале команду:
$ cat ~/.ssh/id_rsa.pub
На консоль будет выведен ключ. Скопируйте его и вставьте в соответствующее поле:
Нажмите на кнопку “Добавить.”
Добавив ключ, выполните в терминале команду:
$ ssh [email protected][IP-адрес сервера]
После этого соединение с сервером будет установлено. Вводить пароль при этом не потребуется.
Windows
В OC Windows подключение к удаленным серверам по SSH возможно, например, с помощью клиента Putty. Скачать его можно здесь (ссылка взята с официального сайта). Putty не требует установки — чтобы начать с ним работать, достаточно просто распаковать скачанный архив.
По завершении распаковки запустите файл puttygen.exe.
Выберите тип ключа SSH-2 RSA и длину 2048 бит, а затем нажмите на кнопку Generate:
Во время генерации водите курсором в пустой области окна (это нужно для создания псевдослучайности):
Сохраните сгенерированную пару ключей на локальной машине (кнопки Save public key и Save private key).
Скопируйте сгененированный ключ и вставьте его в соответствующее поле:
tglnkSSH
взломан самый длинный ключ RSA
Программистам удалось посрамить электронщиков. Без улучшения аппаратной платформы ― фактически с опережением того самого пресловутого закона Мура ― группе исследователей по безопасности удалось поставить новый рекорд по взлому ключа RSA, который до сих пор удавалось вычислить. Подчеркнём ещё раз, рекорд поставлен не на росте голой производительности компьютерного «железа», а благодаря усовершенствованным алгоритмам для разложения большого числа на простые множители и с использованием улучшенной методики вычисления дискретного логарифма.
Многие алгоритмы шифрования с открытым ключом опираются на чрезвычайно большие числа, которые, в свою очередь, получаются путём перемножения двух или более простых чисел. Простые числа в данном случае служат секретными ключами, которые позволяют получить нужный ключ и расшифровать сообщение. Аналогичным образом используется сложность в нахождении дискретного логарифма. Разложение достаточно больших чисел на простые множители и вычисление дискретного логарифма ― это задачи, которые не подлежат взлому, а только вычислению. Все большие числа, которые можно разложить на простые в разумное время, являются скомпрометированными и для повышения защиты шифрования их разрядность необходимо увеличивать.
Новый рекорд, поставленный специалистами, позволил разложить на простые числа ключ RSA-240 длиной 240 десятичных разрядов или 795 бит. Эта же самая команда исследователей смогла вычислить дискретный логарифм такой же длины. Предыдущий рекорд разложения на простые множители был поставлен в 2010 году. Тогда удалось взломать ключ RSA с разрядностью 768 бит или с 232 десятичными разрядами. Простой дискретный логарифм для этой разрядности смогли вычислить в 2016 году. Похоже, ключ RSA 1024 бит в опасности и для надёжного шифрования данных необходимо переходить на 2048-разрядные ключи.
Важнейшим моментом исследования стал факт ускорения вычислений на той же самой аппаратной платформе, которая использовалась в 2016 году. По идее этого не должно было произойти. Растущая сложность вычисления дискретного логарифма длиной 795 бит должна была потребовать в 2,5 раза больших аппаратных ресурсов, чем для вычисления 768-битного числа. Фактически расчёты оказались в 1,33 раза быстрее, что говорит о 3-кратном превосходстве предсказания. Ускорение расчётов исследователи связали с обновлениями в программном обеспечении с открытым исходным кодом, которое опирается на вычисления с использованием метода решета числового поля (Number Field Sieving). Такой пакет как CADO-NFS содержит 300 тыс. строк кода, написанного на C и C ++.
Сумма времени для обоих новых рекордов составляет около 4000 ядро-лет. Аппаратная платформа для решения этой задачи состояла из процессоров Intel Xeon Gold 6130 с тактовой частотой 2,1 ГГц. На вычисление RSA-240 методом NFS ушло 800 ядро-лет, а матричным методом ― 100 ядро-лет.
Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Формирование ключа RSA для подразделения
Для установления защищенного соединения с сервером ЕГАИС необходим ключ RSA. Cформировать ключи RSA вы можете в личном кабинете ЕГАИС. Ключ RSA записывается на тот же аппаратный крипто-носитель, на котором находится закрытый ключ и сертификат выданные Удостоверяющим центром ЗАО «Такснет».
Внимание: Перед получением ключей RSA проверьте в разделе «Получить ключ» реквизиты ваших подразделений и наличие кнопки Сформировать ключ у каждого.
Необходимо выполнение условий:
- Каждая торговая точка должна иметь свой адрес и КПП.
- Адреса двух торговых точек с одинаковым КПП должны быть идентичны до номера дома.
- Если у вас имеются подразделения с одним КПП и разными адресами, нужно обратиться в ФНС для выдачи уникальных КПП для кажого подразделения.
- Для каждого подразделения должен быть отдельный аппаратный крипто-носитель с закрытым ключом, сертификатом и ключом RSA. Индивидуальные предприниматели работают с одним аппаратный крипто-носителем (с одним закрытым ключом, сертификатом и одним ключом RSA).
Ключи RSA вы можете сформировать в личном кабинете в разделе «Получить ключ», нажав на кнопку Сформировать ключ в строке с реквизитами торговой точки.
При генерации ключа RSA потребуется ввести PKI пароль пользователя аппаратного
крипто-носителя (для JaCarta PKI/ГОСТ по умолчанию — 11111111 (8 единиц), для
Рутокен ЭЦП 2. 0 по умолчанию 12345678)
Внимание: Сформировать ключ RSA необходимо для каждой вашей торговой точки, подключая к компьютеру соответствующий аппаратный крипто-носитель с закрытыми ключами и сертификатами.
Во избежании ошибок при использовании ключей RSA, рекомендуется сделать маркировку аппаратных крипто-носителей с указанием подразделения, к которому он принадлежит.
Использовать RSA закрытый ключ для генерации открытого ключа?
Мой ответ ниже немного длинен, но, надеюсь, он содержит некоторые детали, которые отсутствуют в предыдущих ответах. Я начну с некоторых связанных утверждений и, наконец, отвечу на первоначальный вопрос. -1) mod p
Разве закрытый ключ не должен состоять только из пары (n, d)? Почему существует 6 дополнительных компонентов? Он содержит e (открытый показатель степени), так что открытый ключ RSA может быть generated/extracted/derived из закрытого ключа private.pem RSA. Компоненты rest 5 предназначены для ускорения процесса расшифровки. Оказывается, предварительно вычисляя и сохраняя эти 5 значений, можно ускорить расшифровку RSA в 4 раза. расшифровка будет работать без этих 5 компонентов, но это можно сделать быстрее, если они у вас есть под рукой. Алгоритм ускорения основан на китайской теореме об остатках.
Да, закрытый ключ private.pem RSA на самом деле содержит все эти 8 значений; ни одно из них не генерируется на лету при выполнении предыдущей команды. Попробуйте выполнить следующие команды и сравнить выходные данные:
# Convert the key from PEM to DER (binary) format
openssl rsa -in private.pem -outform der -out private.der
# Print private.
der private key contents as binary stream
xxd -p private.der
# Now compare the output of the above command with output
# of the earlier openssl command that outputs private key
# components. If you stare at both outputs long enough
# you should be able to confirm that all components are
# indeed lurking somewhere in the binary stream
openssl rsa -in private.pem -text -noout | less
Эта структура закрытого ключа RSA рекомендуется PKCS#1 v1.5 в качестве альтернативного (второго ) представления. Стандарт PKCS#1 v2.0 полностью исключает показатели e и d из альтернативного представления. PKCS#1 v2.1 и v2.2 предлагают внести дополнительные изменения в альтернативное представление, опционально включив в него дополнительные компоненты, связанные с CRT.
Чтобы увидеть содержимое открытого ключа public.pem RSA, выполните следующее (вывод усечен до меток здесь):
openssl rsa -in public.pem -text -pubin -noout
Modulus - n
Exponent (public) - e
Никаких сюрпризов. Это просто (n, e) пара, как и было обещано.
Теперь, наконец, ответ на первоначальный вопрос: как было показано выше, закрытый ключ RSA, сгенерированный с помощью openssl, содержит компоненты как открытого, так и закрытого ключей и некоторые другие. Когда вы generate/extract/derive открытый ключ из закрытого ключа, openssl копирует два из этих компонентов (e, n) в отдельный файл, который становится вашим открытым ключом.
Настройка ключей SSH в CentOS 7
Введение
SSH или защищенная оболочка — это шифрованный протокол, используемый для администриования и связи с серверами. При работе с сервером CentOS вы проведете больше всего времени в сеансах терминала с подключением к серверу через SSH.
В этом обучающем модуле мы расскажем о настройке ключей SSH для базового варианта установки CentOS 7. Ключи SSH обеспечивают простой и безопасный способ входа на сервер, и их использование рекомендовано для всех пользователей.
Шаг 1 — Создание пары ключей RSA
Первый шаг — создание пары ключей на клиентской системе (обычно на вашем компьютере):
По умолчанию команда ssh-keygen
создает пару 2048-битных ключей RSA. Этот уровень защиты достаточен для большинства случаев (но при желании вы можете использовать флаг
-b 4096
, чтобы создать более надежный 4096-битный ключ).
Восле ввода команды вы должны увидеть следующую строку:
Output
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):
Нажмите ENTER
, чтобы сохранить пару ключей в подкаталог .ssh/
домашнего каталога или укажите альтернативный путь.
Если вы ранее создали пару ключей SSH, вы можете увидеть следующую строку:
Output
/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?
Если вы решите перезаписать ключ на диске, вы больше не сможете выполнять аутентификацию с помощью предыдущего ключа. Будьте осторожны при выборе варианта yes, потому что этот процесс уничтожает ключи, и его нельзя отменить.
Затем вы должны увидеть следующую строку:
Output
Enter passphrase (empty for no passphrase):
Здесь вы можете ввести защищенный пароль, что настоятельно рекомендуется сделать. Пароль добавляет дополнительный уровень безопасности для защиты от входа в систему несанкционированных пользователей. Дополнительную информацию о безопасности можно найти в нашем обучающем модуле Настройка аутентификации на базе ключей SSH на сервере Linux.
Вы должны увидеть следующий результат:
Output
Your identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 [email protected]_host
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+-----------------+
Теперь у вас есть открытый и закрытый ключи, которые вы можете использовать для аутентификации. Наследующем шаге вам нужно разместить открытый ключ на сервере, чтобы вы могли использовать аутентификацию на базе ключей SSH для входа в систему.
Шаг 2 — Копирование открытого ключа на сервер CentOS
Самый быстрый способ скопировать открытый ключ на хост CentOS — использовать утилиту ssh-copy-id
. Это самый простой способ, поэтому его рекомендуется использовать, если он доступен. Если на клиентском компьютере нет утилиты ssh-copy-id
, вы можете использовать один из двух альтернативных методов, описанных в этом разделе (копирование через SSH на базе пароля или копирование ключа вручную).
Копирование открытого ключа с помощью утилиты
ssh-copy-id
Утилита ssh-copy-id
по умолчанию входит в состав многих операционных систем, поэтому она может быть доступна на вашем локальном компьютере. Чтобы этот метод сработал, вы должны уже настроить защищенный паролем доступ к серверу через SSH.
Для использования этой утилиты вам нужно только указать удаленный хост, к которому вы хотите подключиться, и учетную запись пользователя, к которой у вас есть доступ через SSH с использованием пароля. Ваш открытый ключ SSH будет скопирован в эту учетную запись.
Синтаксис выглядит следующим образом:
- ssh-copy-id [email protected]_host
Вы можете увидеть следующее сообщение:
Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Это означает, что ваш локальный компьютер не распознает удаленный хост. Это произойдет при первом подключении к новому хосту. Введите «yes» и нажмите ENTER
, чтобы продолжить.
Затем утилита проведет сканирование локальной учетной записи для поиска ранее созданного ключа id_rsa.pub
. Когда ключ будет найден, вам будет предложено ввести пароль учетной записи удаленного пользователя:
Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]
0.113.1's password:
Введите пароль (для безопасности вводимый текст не будет отображаться) и нажмите ENTER
. Утилита подключится к учетной записи на удаленном хосте, используя указанный вами пароль. Затем содержимое ключа ~/.ssh/id_rsa.pub
будет скопировано в каталог основной каталог ~/.ssh
удаленной учетной записи в файл с именем authorized_keys
.
Вы должны увидеть следующий результат:
Output
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
Теперь ваш ключ id_rsa.pub
key выгружен в удаленную учетную запись. Вы можете переходить к шагу 3.
Копирование открытого ключа с помощью SSH
Если у вас нет ssh-copy-id
, но вы активировали защищенный паролем доступ к учетной записи на вашем сервере через SSH, вы можете выгрузить ключи с помощью стандартного метода SSH.
Для этого нужно использовать команду cat
, чтобы прочитать содержимое открытого ключа SSH на локальном компьютере и передать его через соединение SSH на удаленный сервер.
Также мы можем убедиться, что каталог ~/.ssh
и имеет правильные разрешения для используемой нами учетной записи.
Мы можем вывести переданное содержимое в файл с именем authorized_keys
в этом каталоге. Мы используем символ перенаправления >>
, чтобы дополнять содержимое, а не заменять его. Это позволяет добавлять ключи без уничтожения ранее добавленных ключей.
Полная команда выглядит следующим образом:
- cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Вы можете увидеть следующее сообщение:
Output
The authenticity of host '203.
0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Это означает, что ваш локальный компьютер не распознает удаленный хост. Это произойдет при первом подключении к новому хосту. Введите «yes» и нажмите ENTER
, чтобы продолжить.
После этого вам нужно будет ввести пароль учетной записи удаленного пользователя:
Output
[email protected]'s password:
После ввода пароля содержимое ключа id_rsa.pub
будет скопировано в конец файла authorized_keys
учетной записи удаленного пользователя. Если операция выполнена успешно, переходите к шагу 3.
Копирование открытого ключа вручную
Если для вашего сервера не настроен защищенный паролем доступ через SSH, вам нужно будет выполнить вышеописанную процедуру вручную.
Мы вручную добавим содержимое вашего файла id_rsa.
в файл pub
~/.ssh/authorized_keys
на удаленном компьютере.
Чтобы вывести содержимое ключа id_rsa.pub
, введите на локальном компьютере следующую команду:
Вы увидите содержимое ключа, которое должно выглядеть следующим образом:
Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh2TmWWv11q5O3pISj2ZFl9Hgh2JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh3xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== [email protected]
Получите доступ к удаленному хосту с использованием любого доступного метода.
После получения доступа к учетной записи на удаленном сервере убедитесь, что каталог ~/.ssh
существует. При необходимости эта команда создаст каталог, а если каталог уже существует, команда ничего не сделает.
Теперь вы можете создать или изменить файл authorized_keys
в этом каталоге. Вы можете добавить содержимое файла id_rsa.pub
в конец файла authorized_keys
и при необходимости создать его с помощью этой команды:
- echo public_key_string >> ~/.ssh/authorized_keys
В вышеуказанной команде замените public_key_string
результатами команды cat ~/.ssh/id_rsa.pub
, выполненной на локальном компьютере. Она должна начинаться с ssh-rsa AAAA...
.
Наконец, нужно убедиться, что каталог ~/.ssh
и файл authorized_keys
имеют соответствующий набор разрешений:
При этом будут рекурсивно удалены все разрешения «group» и «other» для каталога ~/.
. ssh/
Если вы используете учетную запись root
для настройки ключей учетной записи пользователя, важно учитывать, что каталог ~/.ssh
принадлежит пользователю, а не пользователю root
:
- chown -R sammy:sammy ~/.ssh
В этом обучающем модуле мы используем имя пользователя sammy, но вы можете заменить его в вышеприведенной команде другим используемым вами именем.
Теперь мы можем попробовать настроить аутентификацию без пароля на нашем сервере Ubuntu.
Шаг 3 — Аутентификация на сервере CentOS с помощью ключей SSH
Если вы успешно выполнили одну из вышеописанных процедур, вы сможете войти на удаленный хост без пароля учетной записи для удаленного хоста.
Базовый процесс выглядит аналогично:
Если вы подключаетесь к этому хосту первый раз (если вы используете указанный выше последний метод), вы сможете увидеть следующее:
Output
The authenticity of host '203.
0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Это означает, что ваш локальный компьютер не распознает удаленный хост. Введите «yes» и нажмите ENTER
, чтобы продолжить.
Если вы не указывали пароль для своего закрытого ключа, вы войдете в систему немедленно. Если вы указали пароль для закрытого ключа при его создании, вам будет предложено ввести пароль. После аутентификации в оболочке откроется новый сеанс с настроенной учетной записью на сервере CentOS.
Если аутентификация на базе ключа выполнена успешно, вы можете перейти к изучению дополнительных возможностей защиты системы посредством отключения аутентификации с помощью пароля.
Шаг 4 — Отключение аутентификации на сервере с помощью пароля
Если вы смогли войти в свою учетную запись с помощью SSH без пароля, это означает, что вы успешно настроили для своей учетной записи аутентификацию на базе ключей SSH. Однако механизм аутентификации по паролю все еще активен, то есть ваш сервер может подвергнуться атаке посредством простого перебора паролей.
Прежде чем выполнять описанные в настоящем разделе шаги, убедитесь, что вы настроили аутентификацию на базе ключей SSH для учетной записи root на этом сервере, или (предпочтительно) вы настроили аутентификацию на базе ключей SSH для учетной записи сервера без привилегий root и с привилегиями sudo
. На этом шаге вход в систему по паролю будет заблокирован, поэтому очень важно сохранить возможность доступа с правами администратора.
Подтвердив права администратора для удаленной учетной записи, выполните вход на удаленный сервер с помощью ключей SSH как пользователь с привилегиями root или как пользователь с привилегиями sudo
. Затем откройте файл конфигурации демона SSH:
- sudo vi /etc/ssh/sshd_config
Найдите в файле директиву PasswordAuthentication
. В начале строки этой директивы может стоять знак комментария. Нажмите
i
для вставки текста, удалите знак комментария и установите значение «no». После этого вы не сможете выполнять вход в систему через SSH с использованием паролей учетной записи:
/etc/ssh/sshd_config
...
PasswordAuthentication no
...
Когда вы закончите вносить изменения, нажмите ESC
, а затем введите :wq
для записи изменений в файл и выхода из системы. Для фактического внесения этих изменений нужно перезапустить службу sshd
:
- sudo systemctl restart sshd.service
В качестве меры предосторожности откройте новое окно терминала и проверьте работу службы SSH, прежде чем закрывать этот сеанс:
После проверки работы службы SSH вы сможете безопасно закрыть все текущие сеансы сервера.
Теперь демон SSH на вашем сервере CentOS будет реагировать только на ключи SSH. Аутентификация на базе паролей успешно отключена.
Заключение
Теперь на вашем сервере должна быть настроена аутентификация на базе ключей SSH, чтобы вы могли входить в систему без пароля учетной записи.
Если вы хотите узнать больше о работе с SSH, посмотрите наше Руководство по основам SSH.
KeySizeValue |
Представляет размер модуля ключа (в битах), используемого алгоритмом асимметричного шифрования.Represents the size, in bits, of the key modulus used by the asymmetric algorithm. (Унаследовано от AsymmetricAlgorithm) |
||||||||||||||||||||||||||
LegalKeySizesValue |
Задает размеры ключа, которые поддерживаются алгоритмом асимметричного шифрования. |
||||||||||||||||||||||||||
CspKeyContainerInfo |
Возвращает объект CspKeyContainerInfo, описывающий дополнительные сведения о паре ключей шифрования.Gets a CspKeyContainerInfo object that describes additional information about a cryptographic key pair. |
||||||||||||||||||||||||||
KeyExchangeAlgorithm |
Получает имя алгоритма обмена ключами, доступного в этой реализации RSA.Gets the name of the key exchange algorithm available with this implementation of RSA. (Унаследовано от RSA) |
||||||||||||||||||||||||||
KeySize |
Получает размер текущего ключа.Gets the size of the current key. |
||||||||||||||||||||||||||
LegalKeySizes |
Возвращает размеры ключа, которые поддерживаются алгоритмом асимметричного шифрования.Gets the key sizes that are supported by the asymmetric algorithm. (Унаследовано от AsymmetricAlgorithm) |
||||||||||||||||||||||||||
PersistKeyInCsp |
Возвращает или задает значение, указывающее, следует ли сохранить ключ в поставщике служб шифрования (CSP). |
||||||||||||||||||||||||||
PublicOnly |
Возвращает значение, указывающее, содержит ли объект RSACryptoServiceProvider только открытый ключ.Gets a value that indicates whether the RSACryptoServiceProvider object contains only a public key. |
||||||||||||||||||||||||||
SignatureAlgorithm |
Получает имя алгоритма подписи, доступного в этой реализации RSA.Gets the name of the signature algorithm available with this implementation of RSA. (Унаследовано от RSA) |
||||||||||||||||||||||||||
UseMachineKeyStore |
Получает или задает значение, указывающее, следует ли сохранять ключ в хранилище ключей компьютера, а не в хранилище профилей пользователей. |
||||||||||||||||||||||||||
Clear() |
Освобождает все ресурсы, используемые классом AsymmetricAlgorithm.Releases all resources used by the AsymmetricAlgorithm class. (Унаследовано от AsymmetricAlgorithm) |
||||||||||||||||||||||||||
Decrypt(Byte[], Boolean) |
Расшифровывает данные с помощью алгоритма RSA.Decrypts data with the RSA algorithm. |
||||||||||||||||||||||||||
Decrypt(Byte[], RSAEncryptionPadding) |
Расшифровывает данные, зашифрованные с помощью алгоритма RSA с использованием указанного заполнения. |
||||||||||||||||||||||||||
Decrypt(Byte[], RSAEncryptionPadding) |
При переопределении в производном классе выполняет расшифровку входных данных с использованием указанного режима заполнения.When overridden in a derived class, decrypts the input data using the specified padding mode. (Унаследовано от RSA) |
||||||||||||||||||||||||||
DecryptValue(Byte[]) |
Если переопределено в производном классе, расшифровывает входные данные с помощью закрытого ключа.When overridden in a derived class, decrypts the input data using the private key. (Унаследовано от RSA) |
||||||||||||||||||||||||||
Dispose() |
Освобождает все ресурсы, используемые текущим экземпляром класса AsymmetricAlgorithm.Releases all resources used by the current instance of the AsymmetricAlgorithm class. (Унаследовано от AsymmetricAlgorithm) |
||||||||||||||||||||||||||
Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые классом AsymmetricAlgorithm (при необходимости освобождает и управляемые ресурсы). |
||||||||||||||||||||||||||
Encrypt(Byte[], Boolean) |
Зашифровывает данные с помощью алгоритма RSA.Encrypts data with the RSA algorithm. |
||||||||||||||||||||||||||
Encrypt(Byte[], RSAEncryptionPadding) |
Шифрует данные с помощью алгоритма RSA с использованием указанного заполнения.Encrypts data with the RSA algorithm using the specified padding. |
||||||||||||||||||||||||||
EncryptValue(Byte[]) |
Этот метод не поддерживается в текущей версии.This method is not supported in the current version. |
||||||||||||||||||||||||||
ExportCspBlob(Boolean) |
Экспортирует большой двоичный объект, содержащий ключевые сведения, связанные с объектом RSACryptoServiceProvider. |
||||||||||||||||||||||||||
ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters) |
Экспортирует текущий ключ в формате PKCS #8 EncryptedPrivateKeyInfo с паролем, основанным на байтах.Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a byte-based password. (Унаследовано от AsymmetricAlgorithm) |
||||||||||||||||||||||||||
ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters) |
Экспортирует текущий ключ в формате PKCS #8 EncryptedPrivateKeyInfo с паролем, основанным на символах.Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a char-based password. (Унаследовано от AsymmetricAlgorithm) |
||||||||||||||||||||||||||
ExportParameters(Boolean) |
Экспортирует объект RSAParameters.Exports the RSAParameters. |
||||||||||||||||||||||||||
ExportPkcs8PrivateKey() |
Экспортирует текущий ключ в формате PKCS#8 PrivateKeyInfo. |
||||||||||||||||||||||||||
ExportRSAPrivateKey() |
Экспортирует текущий ключ в формате PKCS#1 RSAPrivateKey.Exports the current key in the PKCS#1 RSAPrivateKey format. (Унаследовано от RSA) |
||||||||||||||||||||||||||
ExportRSAPublicKey() |
Экспортирует открытую часть текущего ключа в формате PKCS#1 RSAPublicKey.Exports the public-key portion of the current key in the PKCS#1 RSAPublicKey format. (Унаследовано от RSA) |
||||||||||||||||||||||||||
ExportSubjectPublicKeyInfo() |
Экспортирует открытую часть текущего ключа в формате X.509 SubjectPublicKeyInfo.Exports the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format. (Унаследовано от AsymmetricAlgorithm) |
||||||||||||||||||||||||||
ImportCspBlob(Byte[]) |
Импортирует большой двоичный объект, представляющий данные ключа RSA.Imports a blob that represents RSA key information. |
||||||||||||||||||||||||||
ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Int32) |
Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 EncryptedPrivateKeyInfo после расшифровки с помощью пароля на основе байтов, заменяя ключи для этого объекта.Imports the public/private keypair from a PKCS#8 EncryptedPrivateKeyInfo structure after decrypting with a byte-based password, replacing the keys for this object. (Унаследовано от RSA) |
||||||||||||||||||||||||||
ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, ReadOnlySpan<Byte>, Int32) |
Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 EncryptedPrivateKeyInfo после расшифровки с помощью пароля на основе символов, заменяя ключи для этого объекта. |
||||||||||||||||||||||||||
ImportFromEncryptedPem(ReadOnlySpan<Char>, ReadOnlySpan<Byte>) |
Импортирует зашифрованный закрытый ключ в формате RFC 7468 в кодировке PEM, заменяя ключи для этого объекта.Imports an encrypted RFC 7468 PEM-encoded private key, replacing the keys for this object. (Унаследовано от RSA) |
||||||||||||||||||||||||||
ImportFromEncryptedPem(ReadOnlySpan<Char>, ReadOnlySpan<Char>) |
Импортирует зашифрованный закрытый ключ в формате RFC 7468 в кодировке PEM, заменяя ключи для этого объекта.Imports an encrypted RFC 7468 PEM-encoded private key, replacing the keys for this object. (Унаследовано от RSA) |
||||||||||||||||||||||||||
ImportFromPem(ReadOnlySpan<Char>) |
Импортирует зашифрованный ключ в формате RFC 7468 в кодировке PEM, заменив ключи для этого объекта. |
||||||||||||||||||||||||||
ImportParameters(RSAParameters) |
Импортирует заданный RSAParameters.Imports the specified RSAParameters. |
||||||||||||||||||||||||||
ImportPkcs8PrivateKey(ReadOnlySpan<Byte>, Int32) |
Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 PrivateKeyInfo после расшифровки, заменяя ключи для этого объекта.Imports the public/private keypair from a PKCS#8 PrivateKeyInfo structure after decryption, replacing the keys for this object. (Унаследовано от RSA) |
||||||||||||||||||||||||||
ImportRSAPrivateKey(ReadOnlySpan<Byte>, Int32) |
Импортирует пару из открытого и закрытого ключей из структуры PKCS#1 RSAPrivateKey после расшифровки, заменяя ключи для этого объекта.Imports the public/private keypair from a PKCS#1 RSAPrivateKey structure after decryption, replacing the keys for this object. |
||||||||||||||||||||||||||
ImportRSAPublicKey(ReadOnlySpan<Byte>, Int32) |
Импортирует открытый ключ из структуры PKCS#1 RSAPublicKey после расшифровки, заменяя ключи для этого объекта.Imports the public key from a PKCS#1 RSAPublicKey structure after decryption, replacing the keys for this object. (Унаследовано от RSA) |
||||||||||||||||||||||||||
ImportSubjectPublicKeyInfo(ReadOnlySpan<Byte>, Int32) |
Импортирует открытый ключ из структуры X.509 SubjectPublicKeyInfo после расшифровки, заменяя ключи для этого объекта.Imports the public key from an X.509 SubjectPublicKeyInfo structure after decryption, replacing the keys for this object. (Унаследовано от RSA) |
||||||||||||||||||||||||||
MemberwiseClone() |
Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object. (Унаследовано от Object) |
||||||||||||||||||||||||||
SignData(Byte[], HashAlgorithmName, RSASignaturePadding) |
Вычисляет хэш-значение заданного массива байтов с помощью указанного алгоритма хэширования и режима заполнения, а затем подписывает полученное хэш-значение. |
||||||||||||||||||||||||||
SignData(Byte[], Int32, Int32, HashAlgorithmName, RSASignaturePadding) |
Вычисляет хэш-значение части заданного массива байтов с помощью указанного алгоритма хэширования и режима заполнения, а затем подписывает полученное хэш-значение.Computes the hash value of a portion of the specified byte array using the specified hash algorithm and padding mode, and signs the resulting hash value. (Унаследовано от RSA) |
||||||||||||||||||||||||||
SignData(Byte[], Int32, Int32, Object) |
Вычисляет хэш-значение подмножества заданного массива байтов с помощью указанного алгоритма хэширования и подписывает результирующее хэш-значение.Computes the hash value of a subset of the specified byte array using the specified hash algorithm, and signs the resulting hash value. |
||||||||||||||||||||||||||
SignData(Byte[], Object) |
Вычисляет хэш-значение заданного массива байтов с помощью указанного алгоритма хэширования и подписывает результирующее хэш-значение.Computes the hash value of the specified byte array using the specified hash algorithm, and signs the resulting hash value. |
||||||||||||||||||||||||||
SignData(Stream, HashAlgorithmName, RSASignaturePadding) |
Вычисляет хэш-значение заданного потока с помощью указанного алгоритма хэширования и режима заполнения, а затем подписывает полученное хэш-значение.Computes the hash value of the specified stream using the specified hash algorithm and padding mode, and signs the resulting hash value. (Унаследовано от RSA) |
||||||||||||||||||||||||||
SignData(Stream, Object) |
Вычисляет хэш-значение заданного потока с помощью указанного алгоритма хэширования и подписывает результирующее хэш-значение.Computes the hash value of the specified input stream using the specified hash algorithm, and signs the resulting hash value. |
||||||||||||||||||||||||||
SignHash(Byte[], HashAlgorithmName, RSASignaturePadding) |
Вычисляет подпись для указанного хэш-значения с использованием заданного заполнения.Computes the signature for the specified hash value using the specified padding. |
||||||||||||||||||||||||||
SignHash(Byte[], HashAlgorithmName, RSASignaturePadding) |
При переопределении в производном классе вычисляет подпись для указанного хэш-значения с использованием указанного заполнения. |
||||||||||||||||||||||||||
SignHash(Byte[], String) |
Вычисляет подпись для указанного хэш-значения.Computes the signature for the specified hash value. |
||||||||||||||||||||||||||
ToString() |
Возвращает строку, представляющую текущий объект.Returns a string that represents the current object. (Унаследовано от Object) |
||||||||||||||||||||||||||
ToXmlString(Boolean) |
Создает и возвращает строку XML, содержащую ключ текущего объекта RSA.Creates and returns an XML string containing the key of the current RSA object. (Унаследовано от RSA) |
||||||||||||||||||||||||||
TryDecrypt(ReadOnlySpan<Byte>, Span<Byte>, RSAEncryptionPadding, Int32) |
Пытается расшифровать входные данные с использованием указанного режима заполнения и записывает результат в заданный буфер. |
||||||||||||||||||||||||||
TryEncrypt(ReadOnlySpan<Byte>, Span<Byte>, RSAEncryptionPadding, Int32) |
Пытается зашифровать входные данные с использованием указанного режима заполнения и записать результат в заданный буфер.Attempts to encrypt the input data with a specified padding mode into a provided buffer. (Унаследовано от RSA) |
||||||||||||||||||||||||||
TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters, Span<Byte>, Int32) |
Пытается экспортировать текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo в предоставленный буфер с использованием пароля на основе байтов.Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer, using a byte-based password. (Унаследовано от RSA) |
||||||||||||||||||||||||||
TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters, Span<Byte>, Int32) |
Пытается экспортировать текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo в предоставленный буфер с использованием пароля на основе символов. |
||||||||||||||||||||||||||
TryExportPkcs8PrivateKey(Span<Byte>, Int32) |
Пытается экспортировать текущий ключ в формате PKCS#8 PrivateKeyInfo в предоставленный буфер.Attempts to export the current key in the PKCS#8 PrivateKeyInfo format into a provided buffer. (Унаследовано от RSA) |
||||||||||||||||||||||||||
TryExportRSAPrivateKey(Span<Byte>, Int32) |
Пытается экспортировать текущий ключ в формате PKCS#1 RSAPrivateKey в предоставленный буфер.Attempts to export the current key in the PKCS#1 RSAPrivateKey format into a provided buffer. (Унаследовано от RSA) |
||||||||||||||||||||||||||
TryExportRSAPublicKey(Span<Byte>, Int32) |
Пытается экспортировать текущий ключ в формате PKCS#1 RSAPublicKey в предоставленный буфер. |
||||||||||||||||||||||||||
TryExportSubjectPublicKeyInfo(Span<Byte>, Int32) |
Пытается экспортировать текущий ключ в формате X.509 SubjectPublicKeyInfo в предоставленный буфер.Attempts to export the current key in the X.509 SubjectPublicKeyInfo format into a provided buffer. (Унаследовано от RSA) |
||||||||||||||||||||||||||
TryHashData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, Int32) |
Пытается вычислить хэш предоставленных данных с помощью указанного алгоритма и записать результат в заданный буфер.Attempts to compute the hash of the provided data by using the specified algorithm, writing the results into a provided buffer. (Унаследовано от RSA) |
||||||||||||||||||||||||||
TrySignData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, RSASignaturePadding, Int32) |
Пытается хэшировать предоставленные данные с помощью указанного алгоритма и подписать хэш текущим ключом, а затем записать подпись в заданный буфер. |
||||||||||||||||||||||||||
TrySignHash(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, RSASignaturePadding, Int32) |
Пытается подписать хэш текущим ключом и записать подпись в заданный буфер.Attempts to sign the hash with the current key, writing the signature into a provided buffer. (Унаследовано от RSA) |
||||||||||||||||||||||||||
VerifyData(Byte[], Byte[], HashAlgorithmName, RSASignaturePadding) |
Проверяет допустимость цифровой подписи, вычисляя хэш-значение указанных данных с помощью указанного алгоритма хэширования и заполнения, а затем сравнивая его с предоставленной подписью.Verifies that a digital signature is valid by calculating the hash value of the specified data using the specified hash algorithm and padding, and comparing it to the provided signature. |
||||||||||||||||||||||||||
VerifyData(Byte[], Int32, Int32, Byte[], HashAlgorithmName, RSASignaturePadding) |
Проверяет допустимость цифровой подписи, вычисляя хэш-значение данных во фрагменте массива байтов с помощью указанного алгоритма хэширования и заполнения и сравнивая его с предоставленной подписью.Verifies that a digital signature is valid by calculating the hash value of the data in a portion of a byte array using the specified hash algorithm and padding, and comparing it to the provided signature. (Унаследовано от RSA) |
||||||||||||||||||||||||||
VerifyData(Byte[], Object, Byte[]) |
Проверяет допустимость цифровой подписи путем определения хэш-значения в этой подписи с помощью предоставленного открытого ключа и его сравнения с хэш-значением предоставленных данных.Verifies that a digital signature is valid by determining the hash value in the signature using the provided public key and comparing it to the hash value of the provided data. |
||||||||||||||||||||||||||
VerifyData(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, HashAlgorithmName, RSASignaturePadding) |
Проверяет допустимость цифровой подписи, вычисляя хэш-значение указанных данных с помощью указанного алгоритма хэширования и заполнения, а затем сравнивая его с предоставленной подписью.Verifies that a digital signature is valid by calculating the hash value of the specified data using the specified hash algorithm and padding, and comparing it to the provided signature. (Унаследовано от RSA) |
||||||||||||||||||||||||||
VerifyData(Stream, Byte[], HashAlgorithmName, RSASignaturePadding) |
Проверяет допустимость цифровой подписи, вычисляя хэш-значение указанного потока с помощью указанного алгоритма хэширования и заполнения, а затем сравнивая его с предоставленной подписью.Verifies that a digital signature is valid by calculating the hash value of the specified stream using the specified hash algorithm and padding, and comparing it to the provided signature. |
||||||||||||||||||||||||||
VerifyHash(Byte[], Byte[], HashAlgorithmName, RSASignaturePadding) |
Проверяет допустимость цифровой подписи путем определения хэш-значения в этой подписи с помощью указанного хэш-алгоритма и заполнения, сравнивая его с предоставленным хэш-значением.Verifies that a digital signature is valid by determining the hash value in the signature using the specified hashing algorithm and padding, and comparing it to the provided hash value. |
||||||||||||||||||||||||||
Параметры: |
|
---|
Возвращает: объект ключа RSA ( RsaKey
, с закрытым ключом).
-
Крипто.Публичный ключ.RSA.
конструкция
( rsa_components , consistency_check = True ) -
Создайте ключ RSA из кортежа допустимых компонентов RSA.
Модуль n должен быть произведением двух простых чисел. Открытая экспонента e должна быть нечетной и больше 1.
В случае закрытого ключа должны применяться следующие уравнения:
\ [\ begin {split} \ begin {align} р * д & = п \\ e * d & \ Equiv 1 (\ text {mod lcm} [(p-1) (q-1)]) \\ п * и & \ эквив 1 (\ текст {мод} д) \ end {align} \ end {split} \]
Параметры: Вызывает: ValueError
- когда импортируемый ключ не проходит самые простые проверки действительности RSA.Возвращает: ключевой объект RSA (
RsaKey
).
-
Крипто.Публичный ключ.RSA.
import_key
( extern_key , кодовая фраза = Нет ) -
Импортируйте ключ RSA (открытый или закрытый).
Параметры: - extern_key ( строка или строка байта ) -
Ключ RSA для импорта.
Для открытого ключа RSA поддерживаются следующие форматы :
- Сертификат X.509 (двоичный формат или формат PEM)
- X.509
subjectPublicKeyInfo
DER SEQUENCE (двоичный или PEM кодировка) - PKCS # 1
RSAPublicKey
DER SEQUENCE (двоичная или PEM-кодировка) - Строка OpenSSH (например, содержимое
~ / .ssh / id_ecdsa
, ASCII)
Для закрытого ключа RSA поддерживаются следующие форматы :
- PKCS # 1
RSAPrivateKey
DER SEQUENCE (двоичное кодирование или кодирование PEM) - PKCS # 8
PrivateKeyInfo
илиEncryptedPrivateKeyInfo
DER SEQUENCE (двоичная кодировка или кодировка PEM) - OpenSSH (текстовый формат, представленный в OpenSSH 6.5)
Подробнее о кодировке PEM см. RFC1421 / RFC1423.
- парольная фраза ( строка или байтовая строка ) - только для закрытых ключей, парольная фраза, которая шифрует ключ.
Возвращает: ключевой объект RSA (
RsaKey
).Повышает: ValueError / IndexError / TypeError
- Когда данный ключ не может быть проанализирован (возможно, из-за фраза неверна). - extern_key ( строка или строка байта ) -
-
класс
Crypto.PublicKey.RSA.
RsaKey
( ** kwargs ) -
Класс, определяющий фактический ключ RSA. Не создавайте экземпляры напрямую. Вместо этого используйте
generate ()
,construct ()
илиimport_key ()
.Переменные: - n ( целое число ) - модуль RSA
- e ( целое число ) - публичная экспонента RSA
- d ( целое число ) - частный показатель RSA
- p ( целое число ) - Первый коэффициент модуля RSA
- q ( целое число ) - Второй коэффициент модуля RSA
- u - Китайский остаток (\ (p ^ {- 1} \ text {mod} q \))
-
exportKey
( формат = 'PEM' , пароль = нет , pkcs = 1 , защита = нет , randfunc = нет ) -
Экспортируйте этот ключ RSA.
Параметры: - формат ( строка ) -
Формат, используемый для переноса ключа:
- ’PEM’ . ( По умолчанию ) Кодировка текста в соответствии с RFC1421 / RFC1423.
- ’DER’ . Двоичное кодирование.
- ’OpenSSH’ . Текстовое кодирование в соответствии со спецификацией OpenSSH. Подходит только для открытых ключей (не для закрытых ключей).
- парольная фраза ( строка ) - ( Только для закрытых ключей ) Парольная фраза, используемая для защиты вывода.
- pkcs ( целое число ) -
( Только для закрытых ключей ) Структура ASN.1, используемая для сериализация ключа. Обратите внимание, что даже в случае PEM кодирования существует внутренняя структура DER ASN.1.
При
pkcs = 1
( по умолчанию ) закрытый ключ закодирован в простая структура PKCS # 1 (RSAPrivateKey
).При
pkcs = 8
закрытый ключ закодирован в структуре PKCS # 8 (PrivateKeyInfo
).Примечание
Этот параметр игнорируется для открытого ключа. Для DER и PEM - ASN.1 DER
SubjectPublicKeyInfo
структура всегда используется. - защита ( строка ) -
( Только для закрытых ключей ) Схема шифрования, используемая для защиты закрытого ключа.
Если
Нет
(по умолчанию), поведение зависит от формата- Для ‘DER’ , PBKDF2WithHMAC-SHA1AndDES-EDE3-CBC
схема используется.Выполняются следующие операции:
- 16-байтовый тройной ключ DES получен из ключевой фразы
используя
Crypto.Protocol.KDF.PBKDF2 ()
с 8-байтовой солью, и 1000 итерацийCrypto.Hash.HMAC
. - Закрытый ключ зашифрован с использованием CBC.
- Зашифрованный ключ закодирован в соответствии с PKCS # 8.
- 16-байтовый тройной ключ DES получен из ключевой фразы
используя
- Для «PEM» используется устаревшая схема шифрования PEM. Он основан на MD5 для получения ключей и Triple DES для шифрования.
Указание значения для защиты
pkcs = 8
), и только если присутствует парольная фраза.Поддерживаемые схемы для PKCS # 8 перечислены в
Модуль Crypto.IO.PKCS8
(см. Параметрwrap_algo
). - Для ‘DER’ , PBKDF2WithHMAC-SHA1AndDES-EDE3-CBC
схема используется.Выполняются следующие операции:
- randfunc ( вызываемый ) - функция, которая предоставляет случайные байты. Используется только для кодирования PEM.
По умолчанию -
Crypto.Random.get_random_bytes ()
.
Возвращает: закодированный ключ
Тип возврата: байтовая строка
Повышает: ValueError
- когда формат неизвестен или когда вы пытаетесь зашифровать частный ключ в формате DER и PKCS # 1.Предупреждение
Если вы не укажете парольную фразу, закрытый ключ будет экспортируется в чистом виде!
- формат ( строка ) -
-
export_key
( формат = 'PEM' , кодовая фраза = Нет , pkcs = 1 , защита = Нет , randfunc = Нет ) -
Экспортируйте этот ключ RSA.
Параметры: - формат ( строка ) -
Формат, используемый для переноса ключа:
- ’PEM’ . ( По умолчанию ) Кодировка текста в соответствии с RFC1421 / RFC1423.
- ’DER’ . Двоичное кодирование.
- ’OpenSSH’ . Текстовое кодирование в соответствии со спецификацией OpenSSH. Подходит только для открытых ключей (не для закрытых ключей).
- парольная фраза ( строка ) - ( Только для закрытых ключей ) Парольная фраза, используемая для защиты вывода.
- pkcs ( целое число ) -
( Только для закрытых ключей ) Структура ASN.1, используемая для сериализация ключа. Обратите внимание, что даже в случае PEM кодирования существует внутренняя структура DER ASN.1.
При
pkcs = 1
( по умолчанию ) закрытый ключ закодирован в простая структура PKCS # 1 (RSAPrivateKey
).При
pkcs = 8
закрытый ключ закодирован в структуре PKCS # 8 (PrivateKeyInfo
).Примечание
Этот параметр игнорируется для открытого ключа. Для DER и PEM - ASN.1 DER
SubjectPublicKeyInfo
структура всегда используется. - защита ( строка ) -
( Только для закрытых ключей ) Схема шифрования, используемая для защиты закрытого ключа.
Если
Нет
(по умолчанию), поведение зависит от формата- Для ‘DER’ , PBKDF2WithHMAC-SHA1AndDES-EDE3-CBC
схема используется.Выполняются следующие операции:
- 16-байтовый тройной ключ DES получен из ключевой фразы
используя
Crypto.Protocol.KDF.PBKDF2 ()
с 8-байтовой солью, и 1000 итерацийCrypto.Hash.HMAC
. - Закрытый ключ зашифрован с использованием CBC.
- Зашифрованный ключ закодирован в соответствии с PKCS # 8.
- 16-байтовый тройной ключ DES получен из ключевой фразы
используя
- Для «PEM» используется устаревшая схема шифрования PEM. Он основан на MD5 для получения ключей и Triple DES для шифрования.
Указание значения для защиты
pkcs = 8
), и только если присутствует парольная фраза.Поддерживаемые схемы для PKCS # 8 перечислены в
Модуль Crypto.IO.PKCS8
(см. Параметрwrap_algo
). - Для ‘DER’ , PBKDF2WithHMAC-SHA1AndDES-EDE3-CBC
схема используется.Выполняются следующие операции:
- randfunc ( вызываемый ) - функция, которая предоставляет случайные байты. Используется только для кодирования PEM.
По умолчанию -
Crypto.Random.get_random_bytes ()
.
Возвращает: закодированный ключ
Тип возврата: байтовая строка
Повышает: ValueError
- когда формат неизвестен или когда вы пытаетесь зашифровать частный ключ в формате DER и PKCS # 1.Предупреждение
Если вы не укажете парольную фразу, закрытый ключ будет экспортируется в чистом виде!
- формат ( строка ) -
-
has_private
() -
Является ли это закрытым ключом RSA
-
публичный ключ
() -
Соответствующий открытый ключ RSA.
-
size_in_bits
() -
Размер модуля RSA в битах
-
size_in_bytes
() -
Минимальное количество байтов, которое может содержать модуль RSA
-
Крипто.