Ключ ssh: Как создать ключ для авторизации по SSH и добавить его на сервер?

Содержание

Как создать ключ для авторизации по SSH и добавить его на сервер?

Ключ к заданию для «Пятницы 13-е» - jason

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) используется для ограничения доступа к закрытому ключу. Пароль усложнит использование ключа третьими лицами в случае утраты. Если не хотите использовать секретную фразу, нажмите Enter без заполнения строки.

Успешно сгенерировав пару ключей, вы увидите уведомление:

Открытый ключ хранится в файле /домашний_каталог/.ssh/id_rsa.pub, закрытый — /домашний_каталог/.ssh/id_rsa.

Скопируйте открытый ключ на сервер в файл  /домашний_каталог/.ssh/authorized_keys. Одной строкой:

cat ~/.ssh/id_rsa.pub | ssh root@ip-адрес-сервера 'cat >> ~/.ssh/authorized_keys'

Или откройте этот файл на сервере редактором

vi и вставьте строку с открытым ключом после ssh-rsa.

Ещё один способ скопировать ключ в authorized_keys — команда echo, которая помещает строку в конец файла. 

echo ssh-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 | Hexlet Guides

SSH — защищенный протокол для удаленного доступа к компьютерам. Через SSH можно выполнять операции в командной строке компьютера, который физически находится в другом месте.

Иными словами, SSH — это дистанционная командная строка. Визуально вы работаете на своем компьютере, но в реальности — на другом.

Что значит «протокол»?

Протокол — это набор соглашений, правил, по которым разные программы могут обмениваться информацией. SSH — это набор правил, который известен и вашему компьютеру, и физически отдаленному компьютеру.

Пример: вы вводите команду удаления файла, и эта команда передается на другой компьютер и выполняется там. Ответ (или сообщение об ошибке) возвращается и показывается на вашем компьютере.

Что значит «защищенный»?

Вся информация передается в зашифрованном виде. Подобно тому, как некоторые сайты работают по HTTPS, шифруя информацию. Например, ваш онлайн-банкинг обязательно должен работать по защищенному соединению. В таком случае даже если всю информацию перехватывает злоумышленник, он не сможет расшифровать её.

Для чего нужен SSH?

Не всегда есть возможность физически находиться у компьютера, с которым нужно работать. Например, если вы хотите создать свой сайт, то он будет размещен на компьютере хостинг-провайдера. Этот компьютер может находиться на другом конце света. Вам нужен способ запускать команды на этом компьютере не выходя из своего дома.

Как подключаться по SSH?

Для подключения к удаленной машине по SSH нужен клиент — специальная программа. В *nix-подобных системах (Linux, macOS) клиент обычно установлен в системе по умолчанию, и достаточно открыть терминал. В Windows нужно скачать сторонний клиент, например, Putty.

Для подключения нужно указать адрес сервера и, опционально, имя пользователя и порт. Вот как выглядит команда при использовании консольного клиента (в терминале):

ssh username@remote_host -p port

Например, для подключения к серверу 52.307.149.244 в аккаунт ivan нужно ввести:

Если не указывать порт, то будет использован порт SSH по умолчанию — 22. Используемый порт задается при настройке SSH-сервера, программы, которая запущена на удаленном компьютере и ожидает подключения извне.

В графическом клиенте вроде Putty нужно ввести ту же информацию в соответствующие поля:

Fingerprint

При первом подключении появится сообщение:

The authenticity of host '52.307.149.244 (52.307.149.244)' 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 в первый раз.

Это нужно для повышения безопасности. При настройке SSH-сервера создается уникальная комбинация символов — fingerprint («отпечатки пальцев»). Ваш компьютер запоминает эту комбинацию и сверяет ее при каждом новом соединении. Если кто-то переустановит SSH-сервер, или всю операционную систему, или вообще заменит удаленный компьютер, сохранив его адрес, то при следующем соединении вы узнаете об этом, потому что изменится fingerprint.

Если fingerprint не меняется, то такое сообщение не будет появляться.

Подключение по SSH по паролю

Простейший вариант — подключение по паролю. После ввода команды ssh система запросит пароль:

[email protected]'s password: 

Пароль придется вводить каждый раз.

Подключение по SSH по ключу, без пароля

Для удобного подключения по SSH (и многим другим сервисам) без ввода пароля можно использовать ключи.

Нужно создать пару ключей:

приватный (закрытый) ключ и публичный (открытый) ключ. Приватный ключ нужно хранить и никогда никому не показывать. Публичный ключ можно показывать всем и распространять свободно.

Эти ключи связаны друг с другом таким образом, что зашифровав информацию одним ключом, расшифровать ее можно только другим. Например, если ваш друг зашифрует письмо вашим публичным ключом, то прочитать его сможете только вы, потому что для этого нужен ваш приватный ключ. И наоборот: если вы зашифруете что-то своим приватным ключом, то расшифровать его можно только вашим публичным ключом. Так как публичный ключ доступен всем, любой может расшифровать это сообщение. Но он может быть уверен, что сообщение пришло именно от вас. В этом заключается идея цифровой подписи.

Генерация ключей

Создадим пару ключей:

Программа запустится и спросит, куда сохранять ключи:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Нажмите Enter для сохранения в стандартное место — директорию .ssh/id_rsa в вашей домашней директории.

Программа запросит passphrase. Это вроде пароля для ключа. Можно просто нажать Enter и пропустить этот шаг. Или ввести passphrase — тогда его нужно будет вводить каждый раз, когда используется ключ.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Ключи созданы:

Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
8c:e9:7c:fa:bf:c4:e5:9c:c9:b8:60:1f:fe:1c:d3:8a root@here
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|                 |
|       +         |
|      o S   .    |
|     o   . * +   |
|      o + = O .  |
|       + = = +   |
|      ....Eo+    |
+-----------------+

Теперь у вас есть два файла:

  • ~/.ssh/id_rsa — приватный ключ. Никогда никому и никуда не передавайте его!
  • ~/.ssh/id_rsa.pub
    — публичный ключ. Спокойно распространяйте его.

В Windows можно использовать ssh-gen в подсистеме Ubuntu for Windows или в командной строке Git for Windows. Или создавать ключи графической утилитой вроде PuTTYgen.

Загрузка публичного ключа на сервер

Нужно добавить публичный ключ на сервер в файл ~/.ssh/authorized_keys. Самый простой способ — запустить на локальной машине команду для копирования ключа:

ssh-copy-id -i /home/demo/.ssh/id_rsa.pub [email protected]

Другой способ — подключиться по паролю, открыть в редакторе файл ~/.ssh/authorized_keys и добавить в конец текст из вашего файла ~/.ssh/id_rsa.pub.

Теперь при подключении пароль запрашиваться не будет

1.

После включения соединений по ключу рекомендуется отключить подключение по паролю.

ssh-agent

При работе с ключами возможны две неудобные ситуации:

  1. Если при создании ключа вы указали passphrase (пароль для ключа), то вам придется вводить пароль при каждом подключении.
  2. Если у вас есть несколько ключей для разных целей, то при соединении по ssh придется указывать нужный ключ вручную

ssh-agent решает эти проблемы. Этот агент аутентификации (authentication agent) работает на фоне в *nix-системах. В зависимости от системы, вам, возможно, придется установить и настроить его автозапуск самостоятельно.

Если добавить ключ к агенту, то:

  1. для него больше не будет спрашиваться passphrase
  2. не нужно будет вводить ключ вручную — он будет автоматически использован при соответствующем подключении

ssh-add /home/demo/.ssh/id_rsa добавит ключ id_rsa в запущенный в системе агент. Если у него есть passphrase, то агент попросит ввести его.

Если запустить ssh-add без аргументов, то будут добавлены ключи ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 и ~/.ssh/identity.

Список добавленных в агент ключей можно посмотреть командой ssh-add -L:

→ ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC91r/+5WEQHcxVMrxpP9jKuONjlrnEHshfG3v/ab2NKDSljdskODOIsdhaaoDoiSADhAaoDISHasoiDiASisjadOHISDdKJDASHSidshIHDSIHDIAsdjasAs7XG/drBhi16zQ2e8VcLD7bVQS1Cpo0O1tP+93YQBvcIE02RltqVKYo7BlgCaJzpdowK8fHSzpfCYsEFjdjosOjfdsjdjkAJOKkKKHJHhaIiAiaihsiIoqkpqdmlnvnuuUSCaAS8aDhajiadiiAahhakKAKDHAKurmD08jnX9HfH/d15pLK/Glo1Su6iEOU3bW8k92QlY54pPFLKiNRPFuUryE5md7T /Users/demo/.ssh/some_key.pem
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsLC9WpSZ/9YpQ2z1FTSsORcP+ohzCdVjYaoc3C0fRnUbkp4SnvMHFTHNFFod0FhV0cQcOLvBsZAK/0tUPIXeDDFvYD70r5i0AsQbqA0k7gK3b3MP7tmnPxMHd607TI+1FMO54Yig0vnpZOgKmgCsxWq6tckwyLB91BlPiGxLBZiu5yPDIguEQCSnAwkF0vjqrNGsoHB4+fkj0USfjiifsjihf39hifSIHiJFHSijshfj39jfsjisfiisfiissr893IFsifijfsjSOIiAShadfhssU0q0JpjaDEWcMmYXmuz3xSnbhkueGLBXMU2zXDFDWCDSHq9/oRr29UAfVaHAMw== /Users/demo/.ssh/id_rsa

ssh-agent привязан к сессии. Поэтому, например, если перезагрузить компьютер, то ключи нужно будет добавлять в агент заново.

Форвардинг (проброс) ключей

Если вы подключились к удаленному серверу X, и с него хотите подключиться к другому серверу Y, например, чтобы сделать git pull с GitHub’а, то придется держать копию ваших ключей на сервере X.

Утилита ssh с флагом -A позволяет «пробросить» ключи с подключаемой машины в удаленную:

ssh -A [email protected]

Ключи, добавленные к агенту аутентификации (ssh-agent) станут доступными на удаленном сервере. При этом файлы-ключи физически не будут находиться на сервере.

Дополнительные ссылки

  1. Основы SSH / Видео на канале Хекслета
  2. SSH Essentials: Working with SSH Servers, Clients, and Keys
  3. Памятка пользователям ssh

  1. Возможность и специфика подключения по ключу зависит от настроек SSH-сервера. Возможно такое, что подключение по ключу запрещено администратором.

Рахим Давлеткалиев

Как сгенерировать SSH-ключ для доступа на сервер – Vscale Community

Использование SSH-ключей —простой и надёжный способ  обеспечения безопасности соединения с сервером.  В отличие от пароля, взломать SSH-ключ практически невозможно. Сгенерировать SSH-ключ очень просто.

Linux/MacOS

Откройте терминал и выполните команду:

$ 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 user@localhost

The key's randomart image is:

+--[ RSA 2048]----+

|+.o.             |

|ooE              |

|oo               |

|o.+..            |

|.+.+..  S .      |

|....+  o +       |

|  .o ....        |

|  .  .. .        |

|    ....         |

+-----------------+

Далее выполните в терминале команду:

$ cat ~/.ssh/id_rsa.pub

На консоль будет выведен ключ. Скопируйте его и вставьте в соответствующее поле:


Нажмите на кнопку “Добавить.”

Добавив ключ, выполните в терминале команду:

$ ssh root@[IP-адрес сервера]

После этого соединение с сервером будет установлено. Вводить пароль при этом не потребуется.

Windows

В OC Windows подключение к удаленным серверам по SSH возможно, например, с помощью клиента Putty. Скачать его можно здесь (ссылка взята с официального сайта). Putty не требует установки  — чтобы начать с ним работать, достаточно просто распаковать скачанный архив.

По завершении распаковки запустите файл puttygen.exe.

Выберите тип ключа SSH-2 RSA и длину 2048 бит, а затем нажмите на кнопку Generate:

Во время генерации водите курсором в пустой области окна (это нужно для создания псевдослучайности):

Сохраните сгенерированную пару ключей на локальной машине (кнопки Save public key и Save private key).

Скопируйте сгененированный ключ и вставьте его в соответствующее поле:

 

tglnkSSH 

Использование SSH с доступом по ключам

Введение

Чтобы обезопасить свой сервер от взлома, рекомендуется использовать доступ по SSH через RSA ключи. Это может показаться сложным или нереализуемым, но на самом деле процесс прост. Кроме того, один и тот же ключ можно использовать для авторизации на множестве серверов. Рекомендуется иметь два ключа: один для работы и один для личных задач.

SSH ключ, в отличии от пароля подобрать почти нереально.

Почему необходим SSH ключ: хакеры долбятся на SSH порт до тех пор, пока не переберут пароль. И долбятся они с других взломанных серверов. Так что даже нельзя узнать, в какой стране находится сам хакер. Всё скриптами делается. Сначала один сервер покупают где-то далеко, где не найдёшь концы. Дальше он перебирает пароль для нескольких десятков. Потом наконец заходит на один, закачивает скрипт и запускает — и вот уже несколько штук перебирают сервера пароли до ещё десятков. их количество расчёт и мощность увеличивается. Поэтому и приходит сотня ошибок входа. Если пароль менее 12 символов, то его сломают, но не быстро. Если 8 или менее, то сломают быстро, может быть даже за одну ночь.

А если лень делать?

Если лень делать, то приготовьтесь терпеть кучу долбящихся на SSH порт серверов, решать жалобы, связанные со взломом, поиск вредоносных скриптов. Если вредоносный скрипт сделан искусно, то он может себя возрождать после перезагрузки сервера. Если его заразят таким скриптом, то кранты. Сервер, заражённый скриптом обычно ломает другие, одновременно с этим рассылая спам.

Поскольку Вы ответственны за администрирование своего сервера, то за защиту его от взлома ответственны также Вы. Не будьте врагом себе и используйте SSH ключи. Даже для тестовых серверов.

Ну а если поставить длинный пароль?

От входящих подключений с перебором пароля это не защитит. Их происходит по нескольку сотен в час.

Создание ключа

С помощью функционала SSH client (ssh-keygen)

Для начала перейдём к созданию ключа. Можно создавать ключ с помощью функционала SSH client, а можно через PuTTY.

SSH client (предполагает ОС Linux или MAC OS X)

Используйте команду:
ssh-keygen

После введения команды увидите следующий вывод:

Generating public/private rsa key pair. 

Enter file in which to save the key (/your_home/.ssh/id_rsa):

В ответе введите текст, который будет являться средством для раскрытия ключа. Сервер спросит его при подключении.
Если не желаете использовать passphrase, просто нажмите Enter.
Далее увидите подобный вывод о генерации ключа.

Налейте права на каталоги:

chmod 700 .ssh/ && chmod 600 ~/.ssh/authorized_keys

Скопируйте ключ на свой виртуальный сервер (должна быть разрешена авторизация по паролю через SSH):

ssh-copy-id root@ipaddress

Затем введите пароль. Увидите сообщение о том, что скопировано.
Теперь отключитесь от сервера и попробуйте произвести подключение по ключу:
ssh root@ipaddress

Пароль при подключении запросить не должно. Если так и произошло, значит Вы правильно всё делаете. Теперь отредактируйте файл с конфигурации SSH, и расставьте нужные права и перезапустите sshd командой:

chown -R root:root .#//' /etc/ssh/sshd_config && systemctl restart sshd

Генерация ключа через PuTTYgen

Теперь разберём вариант с PuTTY. Здесь чуть менее удобно. Предполагаю, что Вы используете Windows.
Откройте Пуск и найдите PuTTYgen. Запустите его.
Выберите Key: ssh-rsa и тип: SSH-2 RSA key, затем справа снизу укажите длину 2048 напротив поля Number of bits in generated key.
Нажмите «Generate». Поводите мышью, чтобы ключ сгенерировался (это не прикол, уровень энропии возрастает, когда есть движения мыши, PuTTYgen ориентируется на энтропию, создаваемую мышью).
Далее необходимо скопировать наш публичный ключ на сервер. Для этого подключитесь к нему через PuTTY как root с паролем.
Затем вставьте в блокнот код:

cd ~ && mkdir -p ~/.ssh/ && echo 'ssh-rsa key comment' \ >> ~/.ssh/authorized_keys && chown -R root:root .ssh/ && chmod 700 .ssh/ && chmod 600 ~/.ssh/authorized_keys

Вместо слова key вставьте то, что видите в public key, предварительно перенеся текст на одну строку! Затем замените comment коммантарием к ключу (это например: raptor@work). Подключитесь к серверу с паролем. Скопируйте код, вставьте его и выполните. Отключитесь от сервера.
Теперь попробуйте зайти через PuTTY уже с ключом. Для этого перед подключением зайдите в раздел SSH — Auth. Нажмите Browse и укажите программе файл в формате ppk.

Конвертация ключей из PuTTY в OpenSSH формат

Если у Вас есть и Windows машины и Linux рабочие станции, а хочется отосюду заходить с одним ключом, то лучше всего будет сначала создать ключ с PuTTYgen, а затем сконвертировать его в вид, который понимает ssh-client
Для этого установите PuTTY на Linux машине:

sudo apt-get install putty

Теперь перейдите в каталог, где лежит ключ в формате ppk и откройте терминал оттуда:

puttygen my.ppk -O private-openssh -o my.key

Это создаст приватный ключ.

puttygen my.ppk -O public-openssh -o my.pub

Это создаст публичный ключ.

Теперь откройте текстовым редактором файл my.pub

Допишите вначале ssh-rsa а в конце комментарий, например: raptor@work

Теперь через обозреватель файлов оба файла поместите в ~/.ssh и измените имена:

my.pub назовите id_rsa.pub а my.key назовите id_rsa

И затем налейте права:

chmod 700 .ssh/ && chmod 600 ~/.ssh/authorized_keys

Подключение с Android

Предполагается, что ключ уже создали на компьютере.
Для подключения с Android используйте программу Termux.
Обратие внимание также на дополнение Termux Windet.
С помощью него можно создавать кнопочки для запуска скриптов, которые находятся с папке $HOME/.shortcuts/ Если лаунчер позволяет менять значок (это поволяет, например, CPL), то задавать удобные значки. С помощью этого дополнения можно сделать простые скрипты для учёта приёма лекарств или отсылки каких-либо типовых отчётов. Также можно выполять какие-то типовые действия на сервере с помощью кнопочек, так как ssh-client позволяет выполнять команду на сервере сразу после подключения: ssh root@ipaddress command

Как поместить имеющийся OpenSSH ключ на Android смартфон

После конвертации ключа и его преобразования то же самое надо положить в директорию для ssh в Termux (так как у Termux своя директория для ssh). Удобнее всего это сделать по L2 сети через ssh Запустите ssh сервер на Termux, затем подключитесь туда по SSH из той же L2 сети (то есть, находящейся за одним роутером).
Выполните это со смартфона:

pkg update && pkg update

Затем задайте пароль:

passwd

Это будет пароль для подключения по SSH к смартфону

Теперь определите пользователя для подключения:

whoami

Узнайте, какой порт использует SSH клиент на Вашем смартфоне:

netstat -at

Прокрутите список и увидите SSH порт  Подключитесь с компьютера по ssh так:

ssh login@ipaddress -p sshport

login показала команда whoami на экране смартфона. sshport Вы увидели в netstat -at
Скопируйте публичный ключ как в предыдущей инструкции. Затем создайте ключ в каталоге Termux (напоминаю, что публичный ключ вместо key и комментарий наподобие raptor@work вместо comment):

cd ~ && mkdir -p ~/.ssh/ && echo 'ssh-rsa key comment' \ >> ~/.ssh/authorized_keys && chown -R root:root .ssh/ && chmod 700 .ssh/ && chmod 600 ~/.ssh/authorized_keys Налейте права на SSH каталоги:

chmod 700 .ssh/ && chmod 600 ~/.ssh/authorized_keys

Выйдите из Termux. Откройте его снова. Теперь можете подключаться к Вашим серверам с тем же ключом, что и на компьютере.


Подробные инструкции по созданию пары ключей SSH — Azure Virtual Machines

  • Чтение занимает 9 мин

В этой статье

Применимо к: ✔️ виртуальные машины Linux ✔️ гибкие масштабируемые наборы

С помощью пары ключей Secure Shell (SSH) можно создать виртуальную машину Linux, использующую ключи SSH для проверки подлинности. В этой статье показано, как создать и использовать пару файлов открытого и закрытого ключей SSH RSA для клиентских соединений по SSH.

Краткое описание команд приведено в разделе Как создать и использовать пару из открытого и закрытого ключей SSH для виртуальных машин Linux в Azure.

Сведения о создании ключей SSH и их использовании для подключения к компоненту с компьютера Windows см. в статье Использование ключей SSH с ОС Windows в Azure. Вы также можете использовать портал Azure для создания ключей SSH и управления ими при создании виртуальных машин на портале.

Общие сведения о SSH и ключах

SSH — это протокол зашифрованного подключения, обеспечивающий безопасный вход в систему через незащищенные соединения. SSH — это протокол подключения по умолчанию для виртуальных машин Linux, размещенных в Azure. Хотя протокол SSH и обеспечивает зашифрованное подключение, использование паролей для соединений SSH все же сохраняет уязвимость виртуальной машины к атакам методом подбора. Мы рекомендуем подключаться к виртуальной машине по SSH с помощью пары «открытый ключ — закрытый ключ», также известных как ключи SSH.

  • Открытый ключ размещается на виртуальной машине с ОС Linux.

  • Закрытый ключ остается в локальной системе. Его нужно защищать и нельзя никому предоставлять.

При использовании клиента SSH для подключения к виртуальной машине Linux (с открытым ключом) удаленная виртуальная машина проверяет, имеется ли у клиента правильный закрытый ключ. Если у клиента есть закрытый ключ, он получает доступ к виртуальной машине.

В зависимости от политик безопасности организации вы можете использовать отдельную пару из открытого и закрытого ключей для доступа к нескольким виртуальным машинам и службам Azure. Не нужно выделять отдельную пару ключей для каждой виртуальной машины или службы, к которой необходим доступ.

Открытый ключ можно предоставить любому пользователю, но только вы (или ваша локальная инфраструктура безопасности) должны иметь доступ к вашему закрытому ключу.

Поддерживаемые форматы ключей SSH

В настоящее время платформа Azure поддерживает пары из открытого и закрытого ключей SSH-2 RSA длиной не менее 2048 битов. Другие форматы ключей, например ED25519 и ECDSA, не поддерживаются.

Использование ключей SSH и их преимущества

При создании виртуальной машины Azure с открытым ключом платформа Azure копирует его (в формате .pub) в папку ~/.ssh/authorized_keys на виртуальной машине. Ключи SSH в ~/.ssh/authorized_keys используются для запросов к клиенту, который должен подобрать соответствующий закрытый ключ при SSH-подключении. На виртуальной машине Linux в Azure, использующей ключи SSH для аутентификации, платформа Azure настраивает сервер SSHD таким образом, чтобы для входа можно было использовать только ключи SSH. Создавая виртуальные машины Linux в Azure с использованием ключей SSH, вы защищаете это развертывание и выполняете стандартный шаг настройки после развертывания — отключаете пароли в файле sshd_config.

Если вы не хотите использовать ключи SSH, можно настроить на виртуальной машине Linux проверку пароля. Этого достаточно для виртуальных машин без интернет-доступа. Но пользователь по-прежнему должен управлять паролями каждой своей виртуальной машины, а также обеспечивать соответствующие политики паролей и предоставлять рекомендации, к примеру, в отношении минимальной длины паролей и частоты их обновления.

Создание ключей с помощью ssh-keygen

Для создания ключей предпочтительно использовать команду ssh-keygen, которая доступна в служебных программах OpenSSH в Azure Cloud Shell, на узле macOS или Linux и в Windows 10. Команд ssh-keygen задает несколько вопросов, а затем записывает закрытый ключ и соответствующий открытый ключ.

Ключи SSH по умолчанию хранятся в каталоге ~/.ssh. Если у вас нет каталога ~/.ssh, создайте его с правильными разрешениями с помощью команды ssh-keygen.

Простой пример

Приведенная ниже команда ssh-keygen создает файлы 4096-разрядных открытого и закрытого ключей SSH RSA в каталоге ~/.ssh по умолчанию. Если в текущем каталоге существует пара ключей SSH, они будут перезаписаны.

ssh-keygen -m PEM -t rsa -b 4096

Подробный пример

В следующем примере показаны дополнительные параметры команды для создания пары ключей SSH RSA. Если в текущем каталоге существует пара ключей SSH, они будут перезаписаны.

ssh-keygen \
    -m PEM \
    -t rsa \
    -b 4096 \
    -C "azureuser@myserver" \
    -f ~/.ssh/mykeys/myprivatekey \
    -N mypassphrase

Описание команды

ssh-keygen — программа, с помощью которой создаются ключи.

-m PEM — преобразование ключа в формат PEM.

-t rsa — тип создаваемого ключа; в данном случае создается ключ в формате RSA.

-b 4096 — количество битов в ключе; в данном случае ключ содержит 4096 битов.

-C "azureuser@myserver" — комментарий, который будет добавлен в конец файла открытого ключа для идентификации. Обычно в качестве комментария используется адрес электронной почты, но вы можете выбрать для своей инфраструктуры любой удобный метод идентификации.

-f ~/.ssh/mykeys/myprivatekey — имя файла закрытого ключа, если вы решили не использовать имя по умолчанию. В том же каталоге будет создан соответствующий файла открытого ключа с .pub в имени. Этот каталог должен существовать.

-N mypassphrase — дополнительная парольная фраза, используемая для доступа к файлу закрытого ключа.

Пример с ssh-keygen

ssh-keygen -t rsa -m PEM -b 4096 -C "azureuser@myserver"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/azureuser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/azureuser/.ssh/id_rsa.
Your public key has been saved in /home/azureuser/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vFfHHrpSGQBd/oNdvNiX0sG9Vh+wROlZBktNZw9AUjA azureuser@myserver
The key's randomart image is:
+---[RSA 4096]----+
|        .oE=*B*+ |
|          o+o.*++|
|           .oo++*|
|       .    .B+.O|
|        S   o=BO.|
|         . .o++o |
|        . ... .  |
|         ..  .   |
|           ..    |
+----[SHA256]-----+
Сохраненные файлы ключей

Enter file in which to save the key (/home/azureuser/.ssh/id_rsa): ~/.ssh/id_rsa

Имя пары ключей, используемое в этой статье. По умолчанию пара ключей называется id_rsa. Так как некоторые инструменты ищут закрытый ключ в файле id_rsa, имеет смысл создать такой файл. Пары ключей SSH и файл конфигурации SSH по умолчанию располагаются в каталоге ~/.ssh/. Если не указать полный путь, ssh-keygen создаст ключи в текущем рабочем каталоге, а не в стандартном каталоге ~/.ssh.

Список содержимого каталога
~/.ssh
ls -al ~/.ssh
-rw------- 1 azureuser staff  1675 Aug 25 18:04 id_rsa
-rw-r--r-- 1 azureuser staff   410 Aug 25 18:04 id_rsa.pub
Парольная фраза ключа

Enter passphrase (empty for no passphrase):

Мы настоятельно рекомендуем добавить парольную фразу в закрытый ключ. Если не защитить файл ключа парольной фразой, любой пользователь, у которого есть этот файл, сможет использовать его, чтобы войти на любой из серверов, на котором используется соответствующий открытый ключ. Добавив парольную фразу, вы усилите защиту на случай, если другой пользователь получит доступ к файлу закрытого ключа. Это даст вам время, чтобы изменить ключи.

Автоматическое создание ключей во время развертывания

При использовании Azure CLI для создания виртуальных машин можно дополнительно создать файлы открытого и закрытого ключей SSH, выполнив команду az vm create с параметром --generate-ssh-keys. Эти ключи хранятся в каталоге ~/.ssh. Обратите внимание на то, что этот параметр команды не перезаписывает ключи, если они уже существуют в данном расположении.

Предоставление открытого ключа SSH при развертывании виртуальной машины

Чтобы создать виртуальную машину Linux, которая использует ключи SSH для аутентификации, укажите свой открытый ключ SSH при создании виртуальной машины с помощью портала Azure, интерфейса командной строки, шаблонов Resource Manager или других методов. При использовании портала вводится значение открытого ключа. При использовании Azure CLI создания виртуальной машины с использованием существующего открытого ключа укажите значение или расположение этого ключа, выполнив команду az vm create с параметром --ssh-key-value.

Если вам не знаком формат открытого ключа SSH, чтобы просмотреть его, выполните команду cat, заменив параметр ~/.ssh/id_rsa.pub расположением файла собственного открытого ключа.

cat ~/.ssh/id_rsa.pub

Выходные данные должны быть следующего вида (здесь показана исправленная версия).

ssh-rsa XXXXXXXXXXc2EAAAADAXABAAABAXC5Am7+fGZ+5zXBGgXS6GUvmsXCLGc7tX7/rViXk3+eShZzaXnt75gUmT1I2f75zFn2hlAIDGKWf4g12KWcZxy81TniUOTjUsVlwPymXUXxESL/UfJKfbdstBhTOdy5EG9rYWA0K43SJmwPhh38BpoLfXXXXXG+/ilsXXXXXKgRLiJ2W19MzXHp8z3Lxw7r9wx3HaVlP4XiFv9U4hGcp8RMI1MP1nNesFlOBpG4pV2bJRBTXNXeY4l6F8WZ3C4kuf8XxOo08mXaTpvZ3T1841altmNTZCcPkXuMrBjYSJbA8npoXAXNwiivyoe3X2KMXXXXXdXXXXXXXXXXCXXXXX/ azureuser@myserver

Если вы копируете содержимое файла открытого ключа и вставляете его на портале Azure или в шаблон Resource Manager, в этом содержимом не должно быть дополнительных пробелов или символов разрыва строки. Например, при использовании macOS, чтобы скопировать содержимое файла открытого ключа (по умолчанию это ~/.ssh/id_rsa.pub), вы можете передать его в pbcopy (или другие аналогичные программы Linux, например xclip).

Если вы предпочитаете использовать открытый ключ в многострочном формате, можно создать ключ в формате RFC4716 в контейнере pem открытого ключа, созданного ранее.

Чтобы создать ключ в формате RFC4716 из существующего открытого ключа SSH, выполните следующую команду:

ssh-keygen \
-f ~/.ssh/id_rsa.pub \
-e \
-m RFC4716 > ~/.ssh/id_ssh3.pem

Установление SSH-подключения к виртуальной машине с помощью клиента SSH

С помощью открытого ключа, развернутого на виртуальной машине Azure, и закрытого ключа в локальной системе установите SSH-подключение к виртуальной машине, используя ее IP-адрес или DNS-имя. Замените azureuser и myvm.westus.cloudapp.azure.com в приведенной команде, указав имя пользователя администратора и полное доменное имя (или IP-адрес).

ssh [email protected]

Если при создании пары ключей вы указали парольную фразу, введите ее при появлении запроса во время входа в систему. (Сервер добавляется в папку ~/.ssh/known_hosts. Если не изменять открытый ключ на виртуальной машине Azure или не удалять имя сервера из файла ~/.ssh/known_hosts, запрос на подключение повторно не отображается.)

Если виртуальная машина использует политику доступа JIT, запросите доступ, прежде чем подключиться к виртуальной машине. Дополнительные сведения о политике JIT см. в статье Управление доступом к виртуальным машинам с помощью JIT-доступа.

Использование ssh-agent для хранения парольной фразы закрытого ключа

Чтобы не вводить парольную фразу файла закрытого ключа при каждом входе с использованием SSH, вы можете сохранить ее в кэш с помощью команды ssh-agent. Если вы используете компьютер Mac, при вызове ssh-agent парольная фраза закрытого ключа будет надежно сохранена в цепочке ключей macOS.

С помощью ssh-agent и ssh-add сообщите системе SSH о файлах ключей, чтобы вам не нужно было использовать парольную фразу в интерактивном режиме.

eval "$(ssh-agent -s)"

Затем добавьте закрытый ключ к ssh-agent с помощью команды ssh-add.

ssh-add ~/.ssh/id_rsa

Теперь парольная фраза закрытого ключа хранится в ssh-agent.

Копирование ключа на имеющуюся виртуальную машину с помощью ssh-copy-id

Если виртуальная машина Linux уже создана, вы можете добавить для нее новый открытый ключ SSH с помощью ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_rsa.pub azureuser@myserver

Создание и настройка файла конфигурации SSH

Чтобы ускорить процесс входа и оптимизировать поведение клиента SSH, можно создать и настроить файл конфигурации SSH ~/.ssh/config.

В следующем примере показана простая конфигурация, которую можно использовать для быстрого входа на определенную виртуальную машину в качестве пользователя с помощью закрытого ключа SSH по умолчанию.

Создайте файл.

touch ~/.ssh/config

Изменение файла для добавления новой конфигурации SSH

vim ~/.ssh/config

Добавьте параметры конфигурации для виртуальной машины узла. В этом примере имя виртуальной машины — myvm, а имя учетной записи — azureuser.

# Azure Keys
Host myvm
  Hostname 102.160.203.241
  User azureuser
# ./Azure Keys

Можно добавить конфигурации для дополнительных узлов, чтобы каждый из них мог использовать собственную пару ключей. Дополнительные параметры конфигурации приведены в описании файла конфигурации SSH.

Теперь, когда у вас есть пара ключей SSH и настроенный файл конфигурации SSH, вы можете быстро и безопасно входить на виртуальную машину Linux. При выполнении следующей команды служба SSH находит и загружает все параметры из блока Host myvm в файле конфигурации SSH.

ssh myvm

При первом входе на сервер с использованием ключа SSH команда запрашивает парольную фразу для этого файла ключа.

Дальнейшие действия

Следующий шаг — создание виртуальных машин Linux Azure с помощью нового открытого ключа SSH. Виртуальные машины Azure, созданные с использованием открытого ключа SSH в качестве данных для входа, защищены лучше, чем виртуальные машины, созданные с помощью метода по умолчанию, предусматривающего использование паролей.

Настройка пары ключей ssh на linux сервере

Для повышения безопасности ssh-соединения рекомендуется отказаться от логина по паролю, и подключаться к удалённому серверу с помощью ключей. Это действие аналогично отпиранию замка с помощью ключа. Логин по паролю в конце-концов может быть взломан методом перебора, либо утечкой пароля. Тогда как логин по ключам достаточно стоек к взлому.

Здесь будет рассказано, как создать пару ключей на клиентской машине, работающей под ОС Ubuntu 18.04. Однако, данное руководство будет актуально и на других версиях linux, с некоторыми оговорками.

1. Создание пары ключей RSA

Для того, чтобы заходить на сервер по ключу, необходимо сгенерировать пару ключей: открытую и закрытую. Открытый (или публичный) ключ мы помещаем на сервер, а закрытый хранится у нас. По этой паре мы можем осуществлять логин на сервер. На данный сервер сможет заходить тот, у кого есть вторая часть ключа.

Сгенерируем пару ключей.

ssh-keygen

Эта команда по умолчанию создать пару ключей RSA, длинной 2048 бит. Этой длинны вполне хватает по безопасности для большинства операций. Можно добавить флаг -b 4096, чтобы получить ключ длинной 4096 бит.

После выполнения этой команды, вы получите следующий вывод:

Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):

После чего можно нажать клавишу “Enter”, чтобы сохранить эту пару ключей в директорию .ssh/ внутри домашней директории, либо вы можете задать другую директорию.

Если ранее вы генерировали пару ssh-ключей, то вероятнее всего вы получите следующий вывод:

/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?

Обратите внимание, что если у вас уже есть ключ, и вы его используете, то при его перезаписи вы не сможете уже залогиниться на тот сервер, где храниться его публичная часть.

После успешной операции, вы увидите следующий вывод:

Enter passphrase (empty for no passphrase):

Таким образом вы можете задать ключевую фразу, это рекомендуется сделать. Эта фраза добавить ещё дин уровень безопасности, для предотвращения входа на сервер неавторизированных пользователей.

После этого, вы увидите следующий вывод:

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 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
|     ..o         |
|   E o= .        |
|    o. o         |
|        ..       |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+

Это говорит о том, что у вас появилась пара из открытого и закрытого ключа, которые могут быть использованы для логина на удалённый сервер. Далее необходимо скопировать открытый ключ на удалённый сервер.

Копирование открытого ключа с помощью программы

ssh-copy-id

Программа ssh-copy-id присутствует во многих дистрибутивах linux, поэтому наиболее вероятно что этот вариант вам подойдёт по умолчанию.

Для копирования открытой части ключа, достаточно произвести копирования ключа следующей командой:

ssh-copy-id username@remote_host

Если вы ни разу не заходили на сервер, то вероятнее всего вы получите следующее предупреждение:

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 (открытый), который мы создали ранее. Если утилита найдёт этот файл, то программа копирования запросит пароль для входа на удалённый хост.

/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]'s password:

Введите пароль, обратите внимание, что ввод пароля не отображается по соображениям безопасности. И нажимте ввод. После этого программа скопирует содержимое ключа из ~/.ssh/id_rsa.pub в файл authorized_keys в поддиректории ~/.ssh домашней директории вашего пользователя на удалённом хосте. В результате вы увидите следующее сообщение:

Вывод
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.

Таким образом ключ загружен на удалённый сервер.

Копирование ключа вручную

Иногда бывают случаи. когда отсутствует утилита ssh-copy-id (особенно на старых операционных системах). Поэтому можно скопировать ключ вручную. Один из вариантов – это передать ключ по ssh. Для этого мы будем считывать ключ, с помощью команды cat, затем передавать его через pipe команде ssh, которая создаст ключ и разместит его в файле.

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Если это подключение будет в первый раз, нужно будет точно так же согласиться с данным соединением и затем ввести пароль.

Аналогично, можно все эти действия проделать вручную. Например, если вы не имеете доступ по ssh к удалённой машине. Для начала надо вывести содержимое открытого ключа на вашей локальной машине.

cat ~/.ssh/id_rsa.pub

Вы получите содержимое файла ключа, которое будет выглядеть примерно так:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh2TmWWv11q5O3pISj2ZFl9Hgh2JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh3xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

После чего на удалённой машине необходимо создать папку ~/.ssh. Команда ниже создаст директорию, если её не существовало.

mkdir -p ~/.ssh

Теперь можем дописать публичный ключ нашей локальной машины на удалённую в конец файла authorized_keys :

echo строка_публичного_ключа >> ~/.ssh/authorized_keys

Обратите внимание, что надо заменить “строка_публичного_ключа” на вывод команды cat ~/.ssh/id_rsa.pub.

После чего, необходимо убедиться, что директория ~/.ssh и файл authorized_keys  имеют соответствующие права доступа:

chmod -R go= ~/.ssh

Если вы используете акаунт root, для настройки ключей. То не забудьте поменять права пользователя, чтобы директория и файлы ключей принадлежали пользователю, а не root. Делается следующей командой:

chown -R user:user ~/.ssh

Где, user следует заменить на имя вашего пользователя.

Подключение к удалённому серверу и отключение логина по паролю

После всех процедур вы можете попробовать подключиться к удалённому серверу.

ssh username@remote_host

Если при создании пары ключей вы не задали ключевую фразу (passphrase), вы будете залогинены автоматически. Если вы задали ключевую фразу, вам будет предложено её ввести. Это означает, что вы всё сделали верно. Теперь можно отключить логин по паролю. Для этого отредактируем файл sshd_config:

sudo nano /etc/ssh/sshd_config

Вам нужно найти поле: PasswordAuthentication . Она может быть даже закомментирована. Её необходимо раскоментировать и поставить значение no.

...
PasswordAuthentication no
...

Сохраните и закройте файл нажав CTRL + X, затем Y для подтверждения сохранения файла, а далее ENTER для выхода из текстового редактора nano. Для того, чтобы изменения вступили в силу, нам необходимо перезапустить демон sshd:

sudo systemctl restart ssh

Всё, теперь можете открыть новое окно терминала, и проверить соединение по ssh по вашему логину. Всё должно работать без пароля.

SSH по ключу: что такое, как создать и добавить на сервере, настройка

В этой статье мы расскажем, для чего нужен SSH-ключ, как создать SSH ключ и как добавить SSH ключ на сервер.

SSH-ключ — безопасный способ соединения с сервером. Подключение по SSH с помощью ключа исключает риск, который связан с подбором и взломом вашего пароля.

Для аутентификации используются два ключа: приватный и публичный.

Публичный ключ хранится на сервере в корневом каталоге, а приватный ключ остаётся на локальном компьютере в зашифрованном виде. Каждый раз, когда вы обращаетесь к серверу, происходит сопоставление ключей. Таким образом, отпадает необходимость в авторизации с помощью пароля, и данные от вашего сервера остаются в безопасности.

Работа с SSH-ключами

Чтобы воспользоваться SSH-ключом на облачном сервере, для начала его необходимо создать.

Способ создания SSH-ключа зависит от операционной системы, которая установлена на вашем компьютере. Выберите нужную операционную систему и следуйте инструкции:

Как создать SSH ключ в Linux

Сгенерировать ключ в ОС Linux можно с помощью терминала. Для этого:

  1. 1.

    Запустите терминал:

    • в Unity (Ubuntu): «Главное меню» — в поисковой строке введите слово «Терминал», либо просто нажмите комбинацию клавиш: Ctrl+Alt+T;
    • в Xfce (Xubuntu): «Главное меню» — «Приложения» — «Система» — «Терминал»;
    • в KDE (Kubuntu): «Главное меню» — «Приложения» — «Система» — «Терминал».
  2. 2.

    Введите команду ssh-keygen и нажмите Enter.

    Если команда ssh-keygen не найдена, установите пакет openssh.

  3. 3.

    В терминале будет выведено следующее сообщение:

    Нажмите Enter, если хотите, чтобы файл был сохранен в директории по умолчанию. Или введите собственные адрес/имя_файла, чтобы ключ был сохранен в нужной вам директории.

  4. 4.

    Далее вам будет предложено ввести кодовое слово для дополнительной защиты ключа. Вы можете пропустить данный шаг и нажать Enter.

    Если вы укажете кодовое слово, при обращении на сервер оно будет дополнительно запрашиваться и сохраняться на некоторое время. Данный способ позволяет дополнительно защитить ваш приватный ключ.

  5. 5.

    После генерации ключа в папке .ssh будут созданы два файла: id_rsa (приватный ключ) и id_rsa.pub (публичный ключ).

    В терминале будет отображаться отпечаток сгенерированного ключа:

  6. 6.

    Введите команду cat ~/.ssh/id_rsa.pub . В терминале откроется файл с вашим публичным ключом:

Как создать SSH ключ в Windows

Пользователям Windows необходимо скачать SSH-клиент PuTTY на официальном сайте (англоязычная версия). В его состав входит специальная программа для генерации ключей PuTTYgen.

  1. 1.

    Запустите PuTTYgen и нажмите кнопку Generate:

  2. 2.

    Приведите в движение курсор мыши в окне программы для сбора случайных данных. Индикатор загрузки (зелёная полоска) отображает процесс генерации ключа:

  3. 3.

    После того как ключ будет создан, программа отобразит информацию с публичным ключом и отпечатком приватного ключа:

  4. 4.

    Скопируйте публичный ключ из окна Key и сохраните его на локальном компьютере. Приватный ключ можно сохранить с помощью кнопки Save private key.

Важно: Публичный ключ в формате openSSH можно сохранить, только скопировав его вручную. Ключ, сохранённый с помощью кнопки «Save public key», система Linux не распознаёт.

Как создать SSH ключ в macOS

Сгенерировать ключ в macOS можно при помощи терминала.

  1. 1.

    Запустите терминал. Для этого нажмите комбинацию клавиш Command (⌘) + Пробел, введите в поисковой строке Терминал и нажмите Enter.

  2. 2.

    Введите команду ssh-keygen -t rsa и нажмите Enter:

  3. 3.

    Чтобы сохранить файл в директории по умолчанию, нажмите Enter.

  4. 4.

    Вам будет предложено ввести кодовое слово для дополнительной защиты подключения. Вы можете пропустить данный шаг и нажать Enter. Если вы укажете кодовое слово, оно будет дополнительно запрашиваться при каждом подключении к серверу:

  5. 5.

    Повторите пароль или нажмите Enter, если вы пропустили предыдущий шаг.

  6. 6.

    После успешной генерации ключа будет создано два файла: id_rsa (приватный ключ) и id_rsa.pub (публичный ключ). В терминале будет отображаться отпечаток ключа и его изображение:

После создания SSH-ключа вы можете добавить его на сервер с помощью инструкций ниже.

Если вы уже создали облачный сервер, то добавить SSH-ключ можно только на самом сервере, через подключение по SSH.

Чтобы добавить созданный SSH-ключ на существующий сервер, выберите операционную систему, которая установлена на вашем компьютере, и следуйте инструкции:

Linux

  1. 1.

    Запустите терминал:

    • в Unity (Ubuntu): «Главное меню» — в поисковой строке введите слово «Терминал», либо просто нажмите комбинацию клавиш: Ctrl+Alt+T;
    • в Xfce (Xubuntu): «Главное меню» — «Приложения» — «Система» — «Терминал»;
    • в KDE (Kubuntu): «Главное меню» — «Приложения» — «Система» — «Терминал».
  2. 2.

    Введите команду: ssh-copy-id [email protected],

    где root — логин вашего сервера,

    123.123.123.123 — IP-адрес сервера. Его можно узнать в информационном письме, которое было отправлено вам после создания сервера.

  3. 3.

    Нажмите Enter и введите пароль от вашего сервера.

    После успешного подключения ваш ключ будет добавлен на сервер и вы сможете подключаться к серверу без обязательного ввода пароля.

Windows

Все действия нужно выполнять на сервере через подключение по SSH с помощью SSH-клиента PuTTY.

  1. 1.

    Создайте папку .ssh с помощью команды mkdir .ssh.

  2. 2.

    Измените права доступа к папке с помощью команды chmod 700 .ssh и перейдите в неё с помощью команды cd .ssh.

  3. 3.

    Создайте файл с вашим публичным ключом при помощи команды echo your_public_key >> authorized_keys.

  4. 4.

    Добавьте ваш приватный ключ в PuTTY:

macOS

  1. 1.

    Запустите терминал. Для этого нажмите комбинацию клавиш Command (⌘) + Пробел, введите в поисковой строке Терминал и нажмите Enter.

  2. 2.

    Введите команду: ssh-copy-id [email protected],

    Где:

    • user — имя пользователя;
    • 123.123.123.123 — IP-адрес сервера. Его можно узнать в информационном письме, которое было отправлено вам после создания сервера.
  3. 3.

    Нажмите Enter и введите пароль от вашего сервера. После успешного подключения ваш ключ будет добавлен на сервер и вы сможете подключаться к серверу без обязательного ввода пароля.

После добавления SSH-ключа вы можете подключиться к вашему серверу по SSH без ввода пароля.

Добавление SSH-ключа через панель управления облачными серверами возможно только при создании сервера или переустановке.

При добавлении SSH-ключа через панель облачных серверов ключ будет добавлен для root пользователя.

Как добавить ключ при создании сервера

  1. 1. При создании сервера нажмите на кнопку Новый SSH-ключ.
  2. 2.

    Придумайте и введите название SSH-ключа. В поле SSH-ключ вставьте ваш публичный ключ и нажмите Добавить SSH-ключ:

  3. 3.

    Выберите добавленный ключ и нажмите Заказать сервер.

Готово, после создания сервера ваш ключ будет добавлен на сервер. Созданный ключ будет отображаться на вкладке «Настройки»:

Как добавить ключ при переустановке сервера

Перейдите в панель управления облачными серверами и следуйте инструкции:

  1. 1.

    Выберите сервер. Нажмите на значок Шестерёнка, а затем выберите Переустановить систему:

  2. 2.

    На этапе переустановки системы нажмите Добавить SSH-ключ:

  3. 3.

    Придумайте и введите имя SSH-Ключа. В поле SSH-key вставьте ваш публичный ключ и нажмите Добавить SSH-ключ:

  4. 4.

    Выберите добавленный ключ и ОС для переустановки, затем нажмите кнопку Переустановить систему:

Готово, после переустановки ваш ключ будет добавлен на сервер. Созданный вами ключ будет отображаться на вкладке «Настройки»:

После добавления SSH-ключа вы можете подключиться к вашему серверу по SSH без ввода пароля.

Облачные серверы нового поколения

Виртуализация KVM, почасовая оплата, резервные копии, готовые шаблоны, 8 доступных ОС на выбор!

Подробнее Помогла ли вам статья?

20 раз уже помогла

Создание нового ключа SSH и добавление его в ssh-agent

О создании ключа SSH

Если у вас еще нет SSH-ключа, вы должны сгенерировать новый SSH-ключ, который будет использоваться для аутентификации. Если вы не уверены, есть ли у вас уже SSH-ключ, вы можете проверить существующие ключи. Для получения дополнительной информации см. «Проверка существующих ключей SSH».

Если вы хотите использовать аппаратный ключ безопасности для аутентификации на GitHub, вы должны сгенерировать новый ключ SSH для вашего аппаратного ключа безопасности.При аутентификации с помощью пары ключей необходимо подключить аппаратный ключ безопасности к компьютеру. Для получения дополнительной информации см. Примечания к выпуску OpenSSH 8.2.

Если вы не хотите повторно вводить парольную фразу каждый раз, когда вы используете свой SSH-ключ, вы можете добавить свой ключ к агенту SSH, который управляет вашими SSH-ключами и запоминает вашу парольную фразу.

Создание нового ключа SSH

  1. Откройте TerminalTerminalGit Bash.

  2. Вставьте текст ниже, подставив свой адрес электронной почты на GitHub.

      $ ssh-keygen -t ed25519 -C " [email protected] "  

    Примечание: Если вы используете устаревшую систему, которая не поддерживает алгоритм Ed25519, используйте:

      $ ssh-keygen -t rsa -b 4096 -C "[email protected]"  
    Это создает новый ключ SSH, используя предоставленный адрес электронной почты в качестве метки.
     > Создание пары ключей ed25519 public / private.  
  3. Когда вам будет предложено «Введите файл для сохранения ключа», нажмите Enter.Это принимает расположение файла по умолчанию.

     > Введите файл для сохранения ключа (/ Users /  you  /.ssh/id_ed25519):  [Нажмите Enter]   
     > Введите файл для сохранения ключа (/ c / Users /  you  /.ssh/id_ed25519):  [Нажмите Enter]   
     > Введите файл для сохранения ключа (/ home /  you  /.ssh/id_ed25519):  [Нажмите Enter]   
  4. В командной строке введите безопасную парольную фразу.Для получения дополнительной информации см. «Работа с ключевыми ключевыми фразами SSH».

     > Введите кодовую фразу (пусто, если кодовая фраза отсутствует):  [Введите кодовую фразу] 
    > Введите ту же парольную фразу еще раз:  [Введите кодовую фразу еще раз]   

Добавление вашего SSH-ключа к ssh-agent

Перед добавлением нового SSH-ключа к ssh-agent для управления вашими ключами вы должны были проверить существующие SSH-ключи и сгенерировать новый SSH-ключ. При добавлении ключа SSH к агенту используйте команду ssh-add для macOS по умолчанию, а не приложение, установленное macports, homebrew или каким-либо другим внешним источником.

  1. Запустить ssh-agent в фоновом режиме.

      $ eval "$ (ssh-agent -s)"
    > Пид агента 59566  

    В зависимости от вашей среды вам может потребоваться использовать другую команду. Например, вам может потребоваться использовать root-доступ, запустив sudo -s -H перед запуском ssh-agent, или вам может потребоваться использовать exec ssh-agent bash или exec ssh-agent zsh для запуска ssh-агент.

  2. Если вы используете macOS Sierra 10.12.2 или новее, вам нужно будет изменить файл ~ / .ssh / config , чтобы ключи автоматически загружались в ssh-agent и сохранялись парольные фразы в вашей связке ключей.

    • Сначала проверьте, существует ли ваш файл ~ / .ssh / config в местоположении по умолчанию.

        $ открыть ~ / .ssh / config
      > Файл / Users /  у вас  /.ssh/config не существует.  
    • Если файл не существует, создайте файл.

        $ touch ~ /.ssh / config  
    • Откройте файл ~ / .ssh / config , затем измените файл, чтобы он содержал следующие строки. Если ваш файл ключей SSH имеет другое имя или путь, чем в примере кода, измените имя файла или путь в соответствии с вашей текущей настройкой.

        Хост *
        AddKeysToAgent да
        UseKeychain да
        IdentityFile ~ / .ssh / id_ed25519
        

      Примечание: Если вы решили не добавлять парольную фразу к своему ключу, вы должны пропустить строку UseKeychain .

      Примечание: Если вы видите такую ​​ошибку

        /Users/USER/.ssh/config: строка 16: неверный параметр конфигурации: usekeychain
        

      добавьте дополнительную строку конфигурации в свой Host * раздел:

        Хост *
        Игнорировать Неизвестное использование
        
  3. Добавьте свой закрытый ключ SSH к ssh-agent и сохраните кодовую фразу в цепочке для ключей. Если вы создали свой ключ с другим именем или если вы добавляете существующий ключ с другим именем, замените id_ed25519 в команде именем вашего файла закрытого ключа.

      $ ssh-add -K ~ / .ssh / id_ed25519  

    Примечание: Опция -K - это стандартная версия Apple ssh-add , которая сохраняет парольную фразу в вашей связке ключей для вас, когда вы добавляете SSH-ключ к ssh-agent. Если вы решили не добавлять парольную фразу к своему ключу, запустите команду без параметра -K .

    Если у вас не установлена ​​стандартная версия Apple, вы можете получить сообщение об ошибке. Дополнительные сведения об устранении этой ошибки см. В разделе «Ошибка: ssh-add: недопустимый параметр - K.«

  4. Добавьте SSH-ключ в свою учетную запись на GitHub. Дополнительные сведения см. В разделе «Добавление нового ключа SSH в учетную запись GitHub».

Если у вас установлен GitHub Desktop, вы можете использовать его для клонирования репозиториев и не работать с ключами SSH.

  1. Убедитесь, что ssh-agent запущен. Вы можете использовать инструкции «Автоматический запуск ssh-agent» в «Работа с ключевыми ключевыми фразами SSH» или запустить его вручную:

      # запускаем ssh-agent в фоновом режиме
    $ eval "$ (ssh-agent -s)"
    > Пид агента 59566  
  2. Добавьте свой закрытый ключ SSH к ssh-agent.Если вы создали свой ключ с другим именем или если вы добавляете существующий ключ с другим именем, замените id_ed25519 в команде именем вашего файла закрытого ключа.

      $ ssh-add ~ / .ssh / id_ed25519  
  3. Добавьте SSH-ключ в свою учетную запись на GitHub. Дополнительные сведения см. В разделе «Добавление нового ключа SSH в учетную запись GitHub».

  1. Запустить ssh-agent в фоновом режиме.

      $ eval "$ (ssh-agent -s)"
    > Пид агента 59566  

    В зависимости от вашей среды вам может потребоваться использовать другую команду.Например, вам может потребоваться использовать root-доступ, запустив sudo -s -H перед запуском ssh-agent, или вам может потребоваться использовать exec ssh-agent bash или exec ssh-agent zsh для запуска ssh-агент.

  2. Добавьте свой закрытый ключ SSH к ssh-agent. Если вы создали свой ключ с другим именем или если вы добавляете существующий ключ с другим именем, замените id_ed25519 в команде именем вашего файла закрытого ключа.

      $ ssh-add ~ /.ssh / id_ed25519  
  3. Добавьте SSH-ключ в свою учетную запись на GitHub. Дополнительные сведения см. В разделе «Добавление нового ключа SSH в учетную запись GitHub».

Создание нового ключа SSH для аппаратного ключа безопасности

Если вы используете macOS или Linux, вам может потребоваться обновить ваш SSH-клиент или установить новый SSH-клиент перед генерацией нового SSH-ключа. Дополнительные сведения см. В разделе «Ошибка: неизвестный тип ключа».

  1. Вставьте аппаратный ключ безопасности в компьютер.

  2. Откройте TerminalTerminalGit Bash.

  3. Вставьте текст ниже, заменив его адресом электронной почты для своей учетной записи на GitHub.

      $ ssh-keygen -t ed25519-sk -C " [email protected] "  

    Примечание: Если команда не выполняется и вы получаете ошибку недопустимый формат или функция не поддерживается, возможно, вы используете аппаратный ключ безопасности, который не поддерживает алгоритм Ed25519.Вместо этого введите следующую команду.

      $ ssh-keygen -t ecdsa-sk -C "[email protected]"  
  4. При появлении запроса нажмите кнопку на аппаратном ключе безопасности.

  5. Когда вам будет предложено «Введите файл для сохранения ключа», нажмите Enter, чтобы принять расположение файла по умолчанию.

     > Введите файл для сохранения ключа (/ Users /  you  /.ssh/id_ed25519_sk):  [Нажмите Enter]   
     > Введите файл, в котором нужно сохранить ключ (/ c / Users /  you  /.ssh / id_ed25519_sk):  [Нажмите ввод]   
     > Введите файл для сохранения ключа (/ home /  you  /.ssh/id_ed25519_sk):  [Нажмите Enter]   
  6. Когда вам будет предложено ввести кодовую фразу, нажмите Введите .

     > Введите кодовую фразу (пусто, если кодовая фраза отсутствует):  [Введите кодовую фразу] 
    > Введите ту же парольную фразу еще раз:  [Введите кодовую фразу еще раз]   
  7. Добавьте SSH-ключ в свою учетную запись на GitHub.Дополнительные сведения см. В разделе «Добавление нового ключа SSH в учетную запись GitHub».

Дополнительная литература

Как настроить ключи SSH

Введение

Протокол Secure Shell (или SSH) - это криптографический сетевой протокол, который позволяет пользователям безопасно получать доступ к удаленному компьютеру через незащищенную сеть.

Хотя SSH поддерживает аутентификацию на основе пароля, обычно рекомендуется использовать SSH-ключи . Ключи SSH - более безопасный метод входа на сервер SSH, потому что они не уязвимы для распространенных атак взлома пароля грубой силой.

При генерации пары ключей SSH создаются две длинные строки символов: открытый и закрытый ключ. Вы можете разместить открытый ключ на любом сервере, а затем подключиться к серверу с помощью клиента SSH, у которого есть доступ к закрытому ключу.

Когда открытый и закрытый ключи совпадают, сервер SSH предоставляет доступ без пароля. Вы можете еще больше повысить безопасность своей пары ключей, защитив закрытый ключ с помощью необязательной (но настоятельно рекомендуемой) парольной фразы.

Примечание: Если вы ищете информацию о настройке ключей SSH в своей учетной записи DigitalOcean, обратитесь к документации по продукту DigitalOcean по ключам SSH

Шаг 1. Создание пары ключей

Первым шагом является создание пары ключей на клиентском компьютере. Скорее всего, это будет ваш локальный компьютер. Введите следующую команду в локальную командную строку:

  
  

Выход

Генерация пары ключей ed25519 общего и частного доступа.

Вы увидите подтверждение того, что процесс генерации ключа начался, и вам будет предложено ввести некоторую информацию, которую мы обсудим на следующем шаге.

Примечание. , если вы используете более старую систему, которая не поддерживает создание пар ключей ed25519 , или сервер, к которому вы подключаетесь, не поддерживает их, вам следует вместо этого создать надежную пару ключей rsa :

  
  • ssh-keygen -t rsa -b 4096

Это изменяет флаг -t «тип» на rsa и добавляет флаг -b 4096 «бит» для создания 4096-битного ключа.

Шаг 2 - Указание места для сохранения ключей

Первое приглашение от команды ssh-keygen спросит вас, где сохранить ключи:

  

Выходные данные

Введите файл, в котором нужно сохранить ключ (/home/sammy/.ssh/id_ed25519):

Здесь вы можете нажать ENTER , чтобы сохранить файлы в папку по умолчанию в каталоге .ssh вашего домашнего каталога.

Как вариант, вы можете выбрать другое имя или расположение файла, введя его после приглашения и нажав ENTER .

Шаг 3. Создание парольной фразы

Второй и последний запрос от ssh-keygen попросит вас ввести кодовую фразу:

  

Выход

Введите кодовую фразу (пусто, если кодовая фраза отсутствует):

Вам решать, хотите ли вы использовать парольную фразу, но это настоятельно рекомендуется: безопасность пары ключей, независимо от схемы шифрования, по-прежнему зависит от того факта, что она недоступна для других.

Если закрытый ключ без ключевой фразы попадет в распоряжение неавторизованного пользователя, он сможет войти на любой сервер, который вы настроили со связанным открытым ключом.

Основной недостаток ключевой фразы - ее ввод - можно смягчить с помощью службы ssh-agent , которая временно хранит ваш разблокированный ключ и делает его доступным для клиента SSH. Многие из этих агентов интегрированы со встроенной связкой ключей вашей операционной системы, что делает процесс разблокировки еще более простым.

Напомним, весь процесс генерации ключей выглядит так:

  
  

Выход

Генерация пары ключей ed25519 общего и частного доступа.Введите файл, в котором нужно сохранить ключ (/home/sammy/.ssh/id_ed25519): Введите кодовую фразу (пусто, если кодовая фраза отсутствует): Введите ту же парольную фразу еще раз: Ваша идентификация сохранена в /home/sammy/.ssh/id_ed25519. Ваш открытый ключ сохранен в /home/sammy/.ssh/id_ed25519.pub Ключевой отпечаток пальца: SHA256: EGx5HEXz7EqKigIxHHWKpCZItSj1Dy9Dqc5cYae + 1zc sammy @ имя хоста Изображение ключа randomart: + - [ED25519 256] - + | о + о о.о. ++ | | = oo. +. +. o + | | * +. oB.o. о | | *. + Б. . | | о. = о S.. | |. + o o. о. | |, +. .... | |, . о. . E | | .. о. . . | + ---- [SHA256] ----- +

Открытый ключ теперь находится в /home/sammy/.ssh/id_ed25519.pub . Закрытый ключ теперь находится в /home/sammy/.ssh/id_ed25519 .

Шаг 4 - Копирование открытого ключа на ваш сервер

После того, как пара ключей сгенерирована, пора разместить открытый ключ на сервере, к которому вы хотите подключиться.

Вы можете скопировать открытый ключ в файл сервера authorized_keys с помощью команды ssh-copy-id .Обязательно замените пример имени пользователя и адреса:

  
  • ssh-copy-id sammy @ your_server_address

После завершения команды вы сможете войти на сервер через SSH без запроса пароля. Однако, если вы установите парольную фразу при создании ключа SSH, вам будет предложено ввести парольную фразу в это время. Это ваш локальный клиент ssh , который просит вас расшифровать закрытый ключ, это не , а удаленный сервер , запрашивающий пароль.

Шаг 5. Отключение аутентификации SSH на основе пароля (необязательно)

После того, как вы скопировали свои SSH-ключи на сервер, вы можете полностью запретить вход по паролю, настроив SSH-сервер на отключение аутентификации на основе пароля.

Внимание!

Чтобы отключить аутентификацию SSH на основе пароля, откройте файл конфигурации SSH. Обычно он находится по следующему адресу:

.
  
  • sudo nano / etc / ssh / sshd_config

Эта команда откроет файл в текстовом редакторе nano . Найдите в файле строку, содержащую PasswordAuthentication (или создайте строку, если она не существует), убедитесь, что она не закомментирована с помощью # в начале строки, и измените ее на no :

/ etc / ssh / sshd_config

  Пароль Нет аутентификации
  

Сохраните и закройте файл, когда закончите.В nano используйте CTRL + O для сохранения, нажмите ENTER для подтверждения имени файла, затем CTRL + X для выхода.

Перезагрузите службу sshd , чтобы изменения вступили в силу:

  
  • sudo systemctl перезагрузить sshd

Перед выходом из текущего сеанса SSH выполните тестовое соединение в другом терминале, чтобы убедиться, что вы все еще можете подключиться.

Заключение

В этом руководстве мы создали пару ключей SSH, скопировали наш открытый ключ на сервер и (необязательно) полностью отключили аутентификацию на основе пароля.

Для получения дополнительной информации о SSH и службе SSH, в том числе о том, как настроить многофакторную аутентификацию, прочтите наши соответствующие руководства:

Ssh-keygen - это инструмент для создания новых пар ключей аутентификации для SSH. Это учебное пособие по его использованию, которое охватывает несколько особых случаев использования.

Эта страница посвящена OpenSSH версии ssh-keygen . Информацию о Tectia SSH см. Здесь. Если вы хотите сгенерировать ключи для PuTTY, см. PuTTYgen в Windows или PuTTYgen в Linux.

Что такое

ssh-keygen ?

Ssh-keygen - это инструмент для создания новых пар ключей аутентификации для SSH. Такие пары ключей используются для автоматизации входа в систему, единой регистрации и для аутентификации хостов.

Ключи SSH и аутентификация с открытым ключом

Протокол SSH использует криптографию с открытым ключом для аутентификации хостов и пользователей. Ключи аутентификации, называемые ключами SSH, создаются с помощью программы keygen .

SSH представил аутентификацию с открытым ключом как более безопасную альтернативу старой аутентификации .rhosts . Это повысило безопасность, избавив от необходимости хранить пароль в файлах, и устранило возможность кражи пароля пользователя взломанным сервером.

Однако ключи SSH являются учетными данными аутентификации, как и пароли. Таким образом, ими нужно управлять аналогично именам пользователей и паролям. У них должен быть надлежащий процесс завершения, чтобы ключи удалялись, когда они больше не нужны.

Создание пары ключей SSH для аутентификации пользователя

Самый простой способ сгенерировать пару ключей - запустить ssh-keygen без аргументов. В этом случае он запросит файл, в котором будут храниться ключи. Вот пример:

  klar (11:39) ~> ssh-keygen Создание пары ключей открытого и закрытого типа rsa. Введите файл, в котором нужно сохранить ключ (/home/ylo/.ssh/id_rsa): Введите кодовую фразу (пусто, если кодовая фраза отсутствует): Введите ту же кодовую фразу еще раз: Ваша идентификационная информация была сохранена в / home / ylo /.ssh / id_rsa. Ваш открытый ключ сохранен в /home/ylo/.ssh/id_rsa.pub. Отпечаток ключа: SHA256: Up6KjbnEV4Hgfo75YM393QdQsK3Z0aTNBz0DoirrW + c ylo @ klar Случайное изображение ключа: + --- [RSA 2048] ---- + | . ..oo .. | | . . . . .o.X. | | . . о. .. + B | | . o.o. + .. | | ..o.S o .. | | . % o =. | | @ .B .... | | о. =. о. . . . | | .oo E.. .. | + ---- [SHA256] ----- + klar (11:40) ~>  

Сначала инструмент спросил, где сохранить файл. Ключи SSH для аутентификации пользователя обычно хранятся в пользовательском .ssh в домашнем каталоге. Однако в корпоративных средах расположение часто бывает другим. Имя файла ключей по умолчанию зависит от алгоритма, в данном случае id_rsa при использовании алгоритма RSA по умолчанию. Это также может быть, например, id_dsa или id_ecdsa .

Затем он просит ввести кодовую фразу. Парольная фраза используется для шифрования ключа, поэтому ее нельзя использовать, даже если кто-то получит файл закрытого ключа. Кодовая фраза должна быть криптографически надежной.Наш онлайн-генератор случайных паролей - один из возможных инструментов для создания надежных парольных фраз.

Выбор алгоритма и размера ключа

SSH поддерживает несколько алгоритмов открытых ключей для ключей аутентификации. К ним относятся:

  • rsa - старый алгоритм, основанный на сложности факторизации больших чисел. Для RSA рекомендуется размер ключа не менее 2048 бит; 4096 бит лучше. RSA стареет, и в сфере факторинга достигнуты значительные успехи.Рекомендуется выбрать другой алгоритм. Вполне возможно, что в обозримом будущем алгоритм RSA станет практически взломанным. Все клиенты SSH поддерживают этот алгоритм.

  • dsa - старый алгоритм цифровой подписи правительства США. Он основан на сложности вычисления дискретных логарифмов. Обычно с ним используется размер ключа 1024. DSA в исходном виде больше не рекомендуется.

  • ecdsa - новый алгоритм цифровой подписи, стандартизованный правительством США с использованием эллиптических кривых.Вероятно, это хороший алгоритм для текущих приложений. Поддерживаются только три размера ключа: 256, 384 и 521 (sic!) Бит. Мы рекомендуем всегда использовать его с 521 битом, поскольку ключи все еще маленькие и, вероятно, более безопасны, чем меньшие ключи (хотя они также должны быть безопасными). Большинство клиентов SSH теперь поддерживают этот алгоритм.

  • ed25519 - это новый алгоритм, добавленный в OpenSSH. Поддержка его в клиентах еще не универсальна. Таким образом, его использование в приложениях общего назначения еще не рекомендуется.

Алгоритм выбирается с помощью параметра -t , а размер ключа - с помощью параметра -b . Следующие команды иллюстрируют:

  ssh-keygen -t rsa -b 4096 ssh-keygen -t dsa ssh-keygen -t ecdsa -b 521 ssh-keygen -t ed25519  

Указание имени файла

Обычно инструмент запрашивает файл, в котором следует сохранить ключ. Однако его также можно указать в командной строке с помощью параметра -f <имя файла> .

  ssh-keygen -f ~ / тату-ключ-ecdsa -t ecdsa -b 521  

Копирование открытого ключа на сервер

Чтобы использовать аутентификацию с открытым ключом, открытый ключ должен быть скопирован на сервер и установлен в файле authorized_keys. Это удобно сделать с помощью инструмента ssh-copy-id. Как это:

  ssh-copy-id -i ~ / .ssh / tatu-key-ecdsa user @ host  

После настройки открытого ключа на сервере сервер позволит любому подключающемуся пользователю, у которого есть закрытый ключ, войти в систему.В процессе входа в систему клиент доказывает, что владеет закрытым ключом, подписывая обмен ключами цифровой подписью.

Добавление ключа к агенту SSH

ssh-agent - это программа, которая может хранить закрытый ключ пользователя, поэтому парольную фразу закрытого ключа нужно указать только один раз. Соединение с агентом также может быть перенаправлено при входе на сервер, что позволяет командам SSH на сервере использовать агент, запущенный на рабочем столе пользователя.

Дополнительные сведения об использовании и настройке агента SSH см. На странице ssh-agent.

Создание ключей хоста

Инструмент также используется для создания ключей аутентификации хоста. Ключи хоста хранятся в каталоге / etc / ssh / .

Ключи хоста - это просто обычные пары ключей SSH. У каждого хоста может быть один ключ хоста для каждого алгоритма. Ключи хоста почти всегда хранятся в следующих файлах:

  / etc / ssh / ssh_host_dsa_key / etc / ssh / ssh_host_ecdsa_key / etc / ssh / ssh_host_ed25519_key / etc / ssh / ssh_host_rsa_key  

Ключи хоста обычно автоматически генерируются при установке сервера SSH.Их можно восстановить в любой момент. Однако при изменении ключей хоста клиенты могут предупредить об изменении ключей. Об изменении ключей также сообщается, когда кто-то пытается выполнить атаку «злоумышленник посередине». Таким образом, не рекомендуется обучать пользователей слепо принимать их. Таким образом, изменение ключей лучше всего выполнять с помощью инструмента управления ключами SSH, который также меняет их на клиентах, или с помощью сертификатов.

Использование сертификатов X.509 для аутентификации хоста

OpenSSH не поддерживает сертификаты X.509 сертификатов. Tectia SSH их поддерживает. Сертификаты X.509 широко используются в крупных организациях, чтобы упростить изменение ключей хоста на периодической основе, избегая при этом ненужных предупреждений от клиентов. Они также позволяют использовать строгую проверку ключа хоста, что означает, что клиенты сразу откажутся от соединения, если ключ хоста изменился.

Использование проприетарных сертификатов OpenSSH

OpenSSH имеет собственный формат сертификатов, который можно использовать для подписи сертификатов хоста или сертификатов пользователей.Что касается аутентификации пользователей, то отсутствие высоконадежных центров сертификации в сочетании с невозможностью проверить, кто может получить доступ к серверу путем проверки сервера, заставляет нас не рекомендовать использовать сертификаты OpenSSH для аутентификации пользователей.

Однако сертификаты OpenSSH могут быть очень полезны для аутентификации сервера и могут иметь те же преимущества, что и стандартные сертификаты X.509. Однако им нужна собственная инфраструктура для выдачи сертификатов. См. Дополнительную информацию об аутентификации сертификата.

Управление ключами требует внимания

Создать и настроить новые ключи SSH несложно. В конфигурации по умолчанию OpenSSH позволяет любому пользователю настраивать новые ключи. Ключи представляют собой постоянные учетные данные для доступа, которые остаются действительными даже после удаления учетной записи пользователя.

В организациях с более чем несколькими десятками пользователей ключи SSH легко накапливаются на серверах и учетных записях служб на протяжении многих лет. Мы видели предприятия с несколькими миллионами ключей, предоставляющих доступ к своим производственным серверам.Чтобы получить доступ, достаточно одного ключа, который утечка, украден или неправильно настроен.

В любой крупной организации использование решений для управления ключами SSH практически необходимо. Ключи SSH также следует переместить в места, принадлежащие root, с соответствующими процессами инициализации и завершения. Для получения дополнительной информации см. Как управлять ключами SSH. Широко используемым инструментом управления ключами SSH для OpenSSH является Universal SSH Key Manager.

Практически все нормативные базы кибербезопасности требуют управления тем, кто и к чему имеет доступ.Ключи SSH предоставляют доступ и подпадают под это требование. Таким образом, организации в соответствии с мандатами должны внедрять надлежащие процессы управления ключами. NIST IR 7966 - хорошая отправная точка.

Убедитесь, что случайности достаточно

Важно обеспечить достаточную непредсказуемую энтропию в системе при генерации ключей SSH. Были случаи, когда тысячи устройств в Интернете использовали один и тот же ключ хоста, когда они были неправильно настроены для генерации ключа без должной случайности.

Системы общего назначения

На компьютерах общего назначения случайность генерации ключей SSH обычно не является проблемой. Это может быть проблемой при первоначальной установке SSH-сервера и генерации ключей хоста, и только людям, создающим новые дистрибутивы Linux или установочные пакеты SSH, обычно нужно беспокоиться об этом.

Наша рекомендация - собирать случайность в течение всей установки операционной системы, сохранять эту случайность в случайном начальном файле.Затем загрузите систему, соберите еще немного случайности во время загрузки, смешайте сохраненную случайность из исходного файла и только затем сгенерируйте ключи хоста. Это максимизирует использование доступной случайности. И убедитесь, что файл случайного начального числа периодически обновляется, в частности, убедитесь, что он обновляется после генерации ключей хоста SSH.

Многие современные процессоры общего назначения также имеют аппаратные генераторы случайных чисел. Это очень помогает в решении этой проблемы. Лучшая практика - собирать некоторую энтропию другими способами, по-прежнему хранить ее в случайном начальном файле и подмешивать некоторую энтропию из аппаратного генератора случайных чисел.Таким образом, даже если один из них каким-то образом скомпрометирован, другой источник случайности должен сохранить ключи в безопасности.

Встроенные устройства и Интернет вещей

Доступная энтропия может быть реальной проблемой на небольших устройствах Интернета вещей, которые не имеют большой активности в системе. Они могут просто не иметь механической случайности из-за таймингов механического движения дисковода, прерываний, вызванных пользователем, или сетевого трафика. Более того, встроенные устройства часто работают на процессорах начального уровня, которые могут не иметь аппаратного генератора случайных чисел.

Наличие энтропии также критически важно, когда такие устройства генерируют ключи для HTTPS.

Мы рекомендуем такие устройства иметь аппаратный генератор случайных чисел. Если у ЦП его нет, он должен быть встроен в материнскую плату. Стоимость довольно небольшая.

Сводка команд и опций

Вот краткое изложение наиболее часто используемых параметров инструмента генерации ключей:

-b «Биты» Эта опция определяет количество битов в ключе.Правила, регулирующие вариант использования SSH, могут требовать использования определенной длины ключа. Обычно считается, что для ключей RSA достаточно 2048 бит.

-e «Экспорт» Эта опция позволяет переформатировать существующие ключи между форматом файла ключей OpenSSH и форматом, задокументированным в RFC 4716, «Формат файла открытого ключа SSH».

-p «Изменить парольную фразу» Эта опция позволяет изменить парольную фразу в файле закрытого ключа на [-P старая_парольная фраза] и [-N новая_парольная фраза] , [-f ключевой файл] .

-t «Тип» Эта опция определяет тип создаваемого ключа. Обычно используемые значения: - rsa для ключей RSA - dsa для ключей DSA - ecdsa для ключей DSA с эллиптической кривой

-i «Ввод» Если для доступа к существующему ключу требуется ssh-keygen , эта опция обозначает файл.

-f «Файл» Задает имя файла, в котором будет сохранен созданный ключ.

-N «Новый» Предоставляет новую парольную фразу для ключа.

-P «Парольная фраза» Предоставляет (старую) парольную фразу при чтении ключа.

-c «Комментарий» Изменяет комментарий для ключевого файла.

-p Изменить парольную фразу для файла закрытого ключа.

-q Отключение ssh-keygen.

-v Подробный режим.

-l «Отпечаток пальца» Распечатать отпечаток указанного открытого ключа.

-B «Пузырьковая болтовня» Показывает «пузырчатую лепету» (формат Tectia) ключевого файла.

-F Поиск указанного имени хоста в файле known_hosts.

-R Удалить все ключи, принадлежащие имени хоста, из файла known_hosts.

-y Прочитать закрытый файл формата OpenSSH и распечатать открытый ключ OpenSSH в стандартный вывод.

Здесь перечислены только наиболее часто используемые параметры. Для полного использования, включая более экзотические и специальные варианты, используйте команду man ssh-keygen .

ключей Git SSH | Учебник Atlassian Git

Ключ SSH - это учетные данные для доступа к сетевому протоколу SSH (защищенная оболочка).Этот защищенный сетевой протокол с аутентификацией и шифрованием используется для удаленной связи между машинами в незащищенной открытой сети. SSH используется для удаленной передачи файлов, управления сетью и удаленного доступа к операционной системе. Аббревиатура SSH также используется для описания набора инструментов, используемых для взаимодействия с протоколом SSH.

SSH использует пару ключей для инициирования безопасного установления связи между удаленными сторонами. Пара ключей содержит открытый и закрытый ключ. Номенклатура частного и публичного может сбивать с толку, поскольку они оба называются ключами.Более полезно рассматривать открытый ключ как «замок», а закрытый ключ как «ключ». Вы предоставляете публичную «блокировку» удаленным сторонам для шифрования или «блокировки» данных. Затем эти данные открываются с помощью «закрытого» ключа, который вы храните в безопасном месте.

Как создать ключ SSH

ключей SSH генерируются с помощью криптографического алгоритма с открытым ключом, наиболее распространенным из которых является RSA или DSA. На очень высоком уровне ключи SSH генерируются с помощью математической формулы, которая принимает 2 простых числа и случайную начальную переменную для вывода открытого и закрытого ключей.Это односторонняя формула, которая гарантирует, что открытый ключ может быть получен из закрытого ключа, но закрытый ключ не может быть получен из открытого ключа.

SSH-ключи создаются с помощью инструмента генерации ключей. В набор инструментов командной строки SSH входит инструмент для генерации ключей. Большинство провайдеров хостинга git предлагают руководства по созданию ключа SSH.

Создание ключа SSH на Mac и Linux

В операционных системах OsX и Linux есть комплексные современные терминальные приложения, которые поставляются с установленным пакетом SSH.Процесс создания ключа SSH у них одинаков.

1. выполните следующие действия, чтобы начать создание ключа

  ssh-keygen -t rsa -b 4096 -C "[email protected]"  

Эта команда создаст новый ключ SSH с использованием электронной почты в качестве метки

2. Вам будет предложено «Введите файл для сохранения ключа».
Вы можете указать расположение файла или нажать «Enter», чтобы принять расположение файла по умолчанию.

 > Введите файл, в котором нужно сохранить ключ (/ Users / you /.ssh / id_rsa): [Нажмите Enter]  

3. В следующем окне будет запрошена безопасная парольная фраза.
Парольная фраза добавит дополнительный уровень безопасности к SSH и будет требоваться каждый раз при использовании ключа SSH. Если кто-то получит доступ к компьютеру, на котором хранятся закрытые ключи, он также может получить доступ к любой системе, использующей этот ключ. Добавление ключевой фразы к ключам предотвратит этот сценарий.

 > Введите кодовую фразу (пусто, если кодовая фраза отсутствует): [Введите кодовую фразу] 
> Введите ту же кодовую фразу еще раз: [Введите кодовую фразу еще раз]

На этом этапе будет сгенерирован новый ключ SSH для ранее указанного пути к файлу.

4. Добавьте новый ключ SSH к ssh-agent

ssh-agent - это еще одна программа, которая является частью набора инструментов SSH. Ssh-agent отвечает за хранение закрытых ключей. Думайте об этом как о брелке. Помимо хранения закрытых ключей, он также обрабатывает запросы на подписание SSH-запросов закрытыми ключами, чтобы закрытые ключи никогда не передавались небезопасно.

Перед добавлением нового ключа SSH к ssh-agent сначала убедитесь, что ssh-agent запущен, выполнив:

  $ eval "$ (ssh-agent -s)" 
> Идентификатор идентификатора агента 59566

После запуска ssh-agent следующая команда добавит новый ключ SSH к локальному агенту SSH.

  ssh-add -K /Users/you/.ssh/id_rsa  

Новый ключ SSH зарегистрирован и готов к использованию!

Создание ключа SSH в Windows

Среды Windows не имеют стандартной оболочки unix по умолчанию. Для полноценной работы с генератором ключей необходимо установить внешние программы оболочки. Самый простой вариант - использовать Git Bash. После установки Git Bash те же шаги для Linux и Mac можно выполнить в оболочке Git Bash.

Подсистема Windows Linux

Современные среды Windows предлагают подсистему Windows Linux. Подсистема Windows Linux предлагает полную оболочку Linux в традиционной среде Windows. Если подсистема Linux доступна, те же шаги, которые ранее обсуждались для Linux и Mac, можно выполнить в подсистеме Linux для Windows.

Сводка

ключей SSH используются для аутентификации безопасных соединений. Следуя этому руководству, вы сможете создать и начать использовать ключ SSH.Git может использовать SSH-ключи вместо традиционной аутентификации по паролю при отправке или извлечении в удаленные репозитории. Современные размещенные решения git, такие как Bitbucket, поддерживают аутентификацию по ключу SSH.

Руководство по созданию и загрузке ключей SSH

Ключ SSH - это форма аутентификации в протоколе SSH. Он похож на пароль, но позволяет выполнять аутентификацию без ввода пароля или какого-либо ручного ввода. Ключи SSH в целом более безопасны и удобны, чем аутентификация по паролю.

Командная строка

Если в настоящее время у вас есть доступ к SSH на вашем сервере, вы можете сгенерировать ключи SSH в командной строке с помощью утилиты ssh-keygen , которая по умолчанию установлена ​​на наших серверах. Запустите его на своем сервере без параметров или аргументов, чтобы сгенерировать 2048-битную пару ключей RSA (что достаточно безопасно).

Вам будет предложено выбрать файл для пары ключей. Каталог по умолчанию для ключей SSH - ~ / .ssh с закрытым ключом id_rsa и открытым ключом id_rsa.паб . Используя имена файлов по умолчанию, клиент SSH сможет автоматически находить ключи во время аутентификации, поэтому настоятельно рекомендуется не изменять их. Вы можете использовать значение по умолчанию, нажав клавишу Enter.

 Создание пары открытого / закрытого ключей RSA. Введите файл, в котором нужно сохранить ключ (/home/USER/.ssh/id_rsa): 

Если /home/USER/.ssh/id_rsa или ключ с выбранным вами именем уже существует, вам будет предложено перезаписать ключи. Если вы перезапишете существующие ключи, вы больше не сможете использовать их для аутентификации.

После того, как вы выбрали файл для пары ключей, вам будет предложено ввести парольную фразу для шифрования файла с секретным ключом. Шифрование закрытого ключа парольной фразой - (необязательно) , но это повысит безопасность ключей. Если вы вводите кодовую фразу, вам придется вводить ее каждый раз, когда вы используете ключ. Вы можете нажать клавишу Enter, чтобы не использовать парольную фразу; мы настоятельно рекомендуем использовать парольную фразу с ключами SSH.

 Создан каталог /home/USER/.ssh. Введите кодовую фразу (пусто, если кодовая фраза отсутствует): Введите ту же парольную фразу еще раз: 

Теперь будут сгенерированы открытый и закрытый ключи.

 Ваша идентификационная информация сохранена в /home/USER/.ssh/id_rsa. Ваш открытый ключ сохранен в /root/.ssh/id_rsa.pub. Отпечаток ключа: SHA256: boo2WmwU41qy / IxmJCgDjjsg7xvvcXmHhHa7BKhoCPY [email protected] Случайное изображение ключа: + --- [RSA 2048] ---- + | | | o | | +. . . . | | = о. о. + o | | O + .. = .S = o | | X = oEo o.o = + | | * + =. ооо о | | oO +. ..o. | | * +. +. . | + ---- [SHA256] ----- + 

WHM

Вы можете сгенерировать пары ключей SSH для root в WHM >> Home Security Center >> Управление SSH-ключами root .

Нажмите Создать новый ключ , чтобы начать.

На этой странице есть несколько полей: Имя ключа , Пароль ключа , Тип ключа и Размер ключа .

Имя ключа по умолчанию - id_rsa . Ключи генерируются в /root/.ssh/ , поэтому имя ключа по умолчанию будет создавать закрытый ключ в /root/.ssh/id_rsa и открытый ключ в / root /.ssh / id_rsa.pub . Использование имени по умолчанию позволит клиентам SSH автоматически находить ключи, поэтому настоятельно рекомендуется использовать имя по умолчанию (просто оставьте поле пустым или заполните его id_rsa ).

Пароль ключа шифрует файл закрытого ключа с помощью пароля, чтобы добавить дополнительный уровень безопасности. Пароль должен предоставляться каждый раз, когда ключ используется для аутентификации для расшифровки закрытого ключа. В поле Надежность пароля указано, насколько надежен ваш пароль.0 указывает на очень слабый пароль, а 100 указывает на очень надежный пароль. Щелкните Password Generator , чтобы сгенерировать для вас надежный пароль.


Тип ключа и Размер ключа - RSA и 2048 по умолчанию, и они достаточно безопасны для большинства целей, поэтому их можно оставить в покое.

Щелкните Generate Key , чтобы сгенерировать пару ключей SSH. WHM отобразит расположение ключа.

PuTTY

PuTTY - это открытый SSH-клиент Windows.Вам потребуется установить утилиту PuTTYgen для создания пары ключей SSH. PuTTYgen включен в установщик Windows на сайте загрузки PuTTY, но вы можете загрузить его отдельно, если вы установили PuTTY без дополнительных утилит. См. Подключение с помощью PuTTY к серверу Linux, чтобы узнать больше о PuTTY.

Откройте PuTTYgen.

Параметры внизу можно настроить, чтобы повлиять на безопасность ключа, но параметры по умолчанию достаточно безопасны для большинства целей.

Если вас устраивают параметры, нажмите Создать в Действиях , чтобы сгенерировать пару ключей.

Вас могут попросить «создать некоторую случайность, наведя указатель мыши на пустую область», чтобы сгенерировать ключ. Случайность используется для безопасной генерации ваших ключей и затрудняет их воспроизведение.

После того, как ключ будет сгенерирован, вы увидите открытый ключ в PuTTYgen.

Парольная фраза ключа Поле устанавливает пароль, используемый для расшифровки закрытого ключа.Это поле является необязательным, и закрытый ключ не будет зашифрован, если он не указан. Использование ключевой фразы повышает безопасность ваших ключей SSH, и мы настоятельно рекомендуем установить ее.

Обязательно сохраните и открытый, и закрытый ключи на локальном компьютере, чтобы PuTTY мог их использовать для аутентификации в будущем, нажав кнопки Сохранить открытый ключ и Сохранить закрытый ключ .

Если вы не используете парольную фразу, вам будет предложено подтвердить, прежде чем вы сможете сохранить закрытый ключ.Закрытый ключ будет сохранен как файл .ppk . Открытый ключ не имеет расширения по умолчанию, но .pub является распространенным расширением для файлов открытого ключа. Его можно сохранить как файл .txt и , так же как файл открытого ключа хранит только открытый ключ в виде обычного текста.

Командная строка

Если в настоящее время у вас есть доступ к SSH на вашем сервере, вы можете загрузить ключ через командную строку.

Получить содержимое открытого ключа. Если ключ был создан в расположении по умолчанию, это можно сделать путем вывода содержимого ~ /.ssh / id_rsa.pub .

Результат будет примерно таким:

 SSH-RSA AAAAB9NzaC1yc2EAAAADAQABAAABAQDBej / 3XAjhwTwWXsOJmDdKTLtjnpGXsHOAEIYC12qQ R51 + AVJPNsqcDlFdv + Lr / XufQDCh3gXz + ИЭА / LJNb5luxReaVVbKtvAONZgv8uLD1J8kzRXike3h9L53 oIo2j8Lt4fuzB8yAWkwBelurn4OWfk0K6gFXN86RgprKSPN3GbwG6MINAor7NwCHzJhVK9u6Jpw9EPJv Dl4co + N9L + CGgudvY7iBNzIofE9MP68lXcql4bMWz3 + 2H0FWKHZ1rSJz56KjoCKBPWTqdFq5o1AIcauc ECgiTaEGcSNk4 + T0A8BuAOd3a4O9Gr6y8C4Sn4ghYajJVWsszP2B1tTGAc3L 

Откройте (и создайте, если он не существует) ~ /.ssh / authorized_keys с помощью текстового редактора, например nano , pico или vim .

 $ nano ~ / .ssh / authorized_keys 

Если вам нужно было создать каталог ~ / .ssh / или файл authorized_keys , вам необходимо проверить правильность разрешений, иначе вы не сможете войти в систему.

 $ chmod 600 ~ / .ssh / authorized_keys 

Вставьте открытый ключ в конец файла, а затем сохраните и закройте файл.

В качестве альтернативы вы можете добавить открытый ключ к ~ / .ssh / authorized_keys с помощью одной команды.

Вы можете использовать команду cat , если открытый ключ хранится в файле.

 $ cat ~ / .ssh / id_rsa.pub >> ~ / .ssh / authorized_keys 

Если открытый ключ не хранится в виде файла на сервере, вы можете использовать команду echo .

 $ echo "ssh-rsa AAAAB9N ... sszP2B1tTGAc3L" >> ~ / .ssh / authorized_keys 

Обязательно включите весь открытый ключ в кавычки после echo .

После добавления открытого ключа в файл authorized_keys вы сможете войти в систему, используя свои ключи SSH.

WHM

Вы можете импортировать существующий ключ SSH для root в WHM >> Home Security Center >> Управление SSH-ключами root .

Щелкните Ключ импорта .

На следующей странице есть несколько полей, которые нужно заполнить.

Вам нужно указать SSH-ключ в поле . Выберите имя для этого ключа .Имя ключа по умолчанию - id_rsa . Использование имени по умолчанию позволит клиентам SSH автоматически находить ключи, поэтому настоятельно рекомендуется использовать имя по умолчанию (просто оставьте поле пустым или заполните его id_rsa ).

Если вы импортируете файл PPK (PuTTYgen key), введите его пароль (если применимо) в текстовое поле Парольная фраза закрытого ключа .

Вставьте открытый ключ в соответствующее поле, но не , а вставьте закрытый ключ в это поле; закрытые ключи всегда должны оставаться на серверах, которые их сгенерировали.

Щелкните Импорт .

WHM отобразит имя импортированных ключей, оттуда вам нужно будет авторизовать SSH-ключ, который вы только что импортировали, нажав «Управление авторизацией» и «Авторизовать». После того, как вы авторизовали ключ, вы должны теперь иметь возможность аутентифицироваться через SSH с помощью ключа.

Имя по умолчанию для пар ключей SSH - id_rsa , и это имя позволит клиенту SSH найти ключ автоматически. Если пара ключей SSH не использует имя по умолчанию, вам нужно будет указать имя используемого ключа.

 $ ssh [email protected] -i / путь / к / ssh / ключ 

GitLab и SSH-ключей | GitLab

Git - это распределенная система контроля версий, что означает, что вы можете работать локально, затем поделитесь или «отправьте» свои изменения на сервер. В данном случае это GitLab.

GitLab использует протокол SSH для безопасного взаимодействия с Git. Когда вы используете ключи SSH для аутентификации на удаленном сервере GitLab, вам не нужно каждый раз вводить имя пользователя и пароль.

Предварительные требования

Чтобы использовать SSH для связи с GitLab, вам необходимо:

  • Клиент OpenSSH, который предустановлен в GNU / Linux, macOS и Windows 10.
  • SSH версии 6.5 или новее. В более ранних версиях использовалась подпись MD5, что небезопасно.

Чтобы просмотреть версию SSH, установленную в вашей системе, запустите ssh -V .

Поддерживаемые типы ключей SSH

Для связи с GitLab вы можете использовать следующие типы ключей SSH:

Администраторы могут ограничивать разрешенные ключи и их минимальную длину.

ED25519 ключи SSH

Книга Практическая криптография с Go предполагает, что ключи ED25519 более безопасны и производительны, чем ключи RSA.

OpenSSH 6.5 представил SSH-ключи ED25519 в 2014 году, и они должны быть доступны на большинстве операционные системы.

ключи RSA SSH

Имеющаяся документация предполагает, что ED25519 более безопасен, чем RSA.

Если вы используете ключ RSA, Национальный институт науки и технологий США в Публикация 800-57 Часть 3 (PDF) рекомендует размер ключа не менее 2048 бит. Размер ключа по умолчанию зависит от вашей версии ssh-keygen . Просмотрите страницу man для установленной команды ssh-keygen для получения дополнительных сведений.

Проверьте, есть ли у вас существующая пара ключей SSH

Перед созданием пары ключей проверьте, существует ли уже пара ключей.

  1. В Windows, Linux или macOS перейдите в свой домашний каталог.
  2. Перейдите в подкаталог .ssh / . Если подкаталог .ssh / не существует, вы либо не находитесь в домашнем каталоге, либо ранее не использовали ssh . В последнем случае вам необходимо сгенерировать пару ключей SSH.
  3. Проверьте, существует ли файл одного из следующих форматов:

    Алгоритм Открытый ключ Закрытый ключ
    ED25519 (предпочтительно) id_ed25519.паб id_ed25519
    RSA (размер ключа не менее 2048 бит) id_rsa.pub id_rsa
    DSA (не рекомендуется) id_dsa.pub id_dsa
    ECDSA id_ecdsa.pub id_ecdsa

Создание пары ключей SSH

Если у вас нет существующей пары ключей SSH, сгенерируйте новую.

  1. Откройте терминал.
  2. Введите ssh-keygen -t , затем введите тип ключа и необязательный комментарий. Этот комментарий включен в созданный файл .pub . Вы можете использовать адрес электронной почты для комментария.

    Например, для ED25519:

      ssh-keygen -t ed25519 -C "<комментарий>"
      

    Для 2048-битного RSA:

      ssh-keygen -t rsa -b 2048 -C "<комментарий>"
      
  3. Нажмите Enter.Отображается результат, подобный следующему:

      Создание пары ключей ed25519 общего и частного доступа.
    Введите файл, в котором нужно сохранить ключ (/home/user/.ssh/id_ed25519):
      
  4. Примите предложенные имя файла и каталог, если вы не создаете ключ развертывания. или хотите сохранить в определенном каталоге, где вы храните другие ключи.

    Вы также можете назначить пару ключей SSH определенному хосту.

  5. Укажите кодовую фразу:

      Введите кодовую фразу (пусто, если кодовая фраза отсутствует):
    Введите ту же парольную фразу еще раз:
      
  6. Отображается подтверждение, включая информацию о том, где хранятся ваши файлы.

Генерируются открытый и закрытый ключи. Добавьте открытый SSH-ключ в свою учетную запись GitLab и сохраните секретный ключ в безопасности.

Настроить SSH для указания на другой каталог

Если вы не сохранили пару ключей SSH в каталоге по умолчанию, настройте ваш SSH-клиент так, чтобы он указывал на каталог, в котором хранится закрытый ключ.

  1. Откройте терминал и выполните эту команду:

      eval $ (ssh-agent -s)
    ssh-add <каталог для закрытого SSH-ключа>
      
  2. Сохраните эти настройки в файле ~ /.ssh / config файл. Например:

      # GitLab.com
    Хост gitlab.com
      PreferredAuthentication публичный ключ
      IdentityFile ~ / .ssh / gitlab_com_rsa
    
    # Частный экземпляр GitLab
    Хост gitlab.company.com
      PreferredAuthentication публичный ключ
      IdentityFile ~ / .ssh / example_com_rsa
      

    Дополнительные сведения об этих параметрах см. На странице man ssh_config в руководстве по настройке SSH.

Открытые ключи SSH должны быть уникальными для GitLab, поскольку они привязаны к вашей учетной записи.Ваш SSH-ключ - единственный идентификатор, который у вас есть, когда вы отправляете код с помощью SSH. Он должен однозначно соответствовать одному пользователю.

Обновите парольную фразу ключа SSH

Вы можете обновить парольную фразу для своего SSH-ключа.

  1. Откройте терминал и выполните эту команду:

      ssh-keygen -p -f / путь / к / ssh_key
      
  2. При появлении запроса введите парольную фразу и нажмите Enter.

Обновите пару ключей RSA до более безопасного формата

Если ваша версия OpenSSH находится между 6.5 и 7,8, вы можете сохранить свои личные ключи RSA SSH в более безопасном Формат OpenSSH.

  1. Откройте терминал и выполните эту команду:

      ssh-keygen -o -f ~ / .ssh / id_rsa
      

    В качестве альтернативы вы можете сгенерировать новый ключ RSA с более безопасным форматом шифрования с помощью следующая команда:

      ssh-keygen -o -t rsa -b 4096 -C "<комментарий>"
      

Добавьте SSH-ключ в свою учетную запись GitLab

Чтобы использовать SSH с GitLab, скопируйте свой открытый ключ в свою учетную запись GitLab.

  1. Скопируйте содержимое файла открытого ключа. Вы можете сделать это вручную или использовать скрипт. Например, чтобы скопировать ключ ED25519 в буфер обмена:

    macOS:

      tr -d '\ n' <~ / .ssh / id_ed25519.pub | pbcopy
      

    Linux (требуется пакет xclip ):

      xclip -sel клип <~ / .ssh / id_ed25519.pub
      

    Git Bash для Windows:

      кот ~ /.ssh / id_ed25519.pub | зажим
      

    Замените id_ed25519.pub своим именем файла. Например, используйте id_rsa.pub для RSA.

  2. Войдите в GitLab.
  3. На верхней панели в правом верхнем углу выберите свой аватар.
  4. Выберите Настройки .
  5. На левой боковой панели выберите SSH Keys .
  6. В поле Key вставьте содержимое вашего открытого ключа. Если вы вручную скопировали ключ, убедитесь, что вы скопировали весь ключ, который начинается с ssh-ed25519 или ssh-rsa и может заканчиваться комментарием.
  7. В поле Название введите описание, например Рабочий ноутбук или Домашняя рабочая станция .
  8. Необязательно. В поле « Истекает в » выберите дату истечения срока. (Представлено в GitLab 12.9.) В:
    • GitLab 13.12 и ранее, срок действия носит информационный характер. Это не мешает вы от использования ключа. Администраторы могут просматривать даты истечения срока действия и использовать их для руководство при удалении ключей.
    • GitLab 14.0 и новее, дата истечения срока действия обязательна.Администраторы могут разрешить использование ключей с истекшим сроком действия.
    • GitLab проверяет все ключи SSH каждый день в 02:00 UTC. Он отправляет по электронной почте уведомление об истечении срока действия всех ключей SSH, срок действия которых истекает в текущую дату. (Представлено в GitLab 13.11.)
    • GitLab проверяет все ключи SSH каждый день в 01:00 UTC. Он отправляет по электронной почте уведомление об истечении срока действия всех ключей SSH, срок действия которых истекает через семь дней. (Представлено в GitLab 13.11.)
  9. Выберите Добавить ключ .

Убедитесь, что вы можете подключиться

Убедитесь, что ваш SSH-ключ был добавлен правильно.

  1. Для GitLab.com, чтобы убедиться, что вы подключаетесь к правильному серверу, подтвердите Отпечатки ключей хоста SSH.
  2. Откройте терминал и выполните эту команду, заменив gitlab.example.com URL-адресом вашего экземпляра GitLab:

      ssh -T [email protected]
      
  3. Если вы подключаетесь впервые, вам следует проверить подлинность хоста GitLab. Если вы видите такое сообщение:

      Подлинность хоста gitlab.example.com (35.231.145.151) 'не может быть установлен.
    Отпечаток ключа ECDSA - SHA256: HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.
    Вы уверены, что хотите продолжить подключение (да / нет)? да
    Предупреждение: «gitlab.example.com» (ECDSA) постоянно добавлен в список известных хостов.
      

    Введите yes и нажмите Enter.

  4. Снова выполните команду ssh -T [email protected] . Вы должны получить Добро пожаловать в GitLab, @username ! Сообщение .

Если приветственное сообщение не появляется, вы можете устранить неполадки, запустив ssh в подробном режиме:

  ssh -Tvvv [email protected]
  

Используйте разные ключи для разных репозиториев

Вы можете использовать разные ключи для каждого репозитория.

Откройте терминал и выполните эту команду:

  git config core.sshCommand "ssh -o IdentitiesOnly = yes -i ~ / .ssh / private-key-filename-for-this-repository -F / dev / null"
  

Эта команда не использует агент SSH и требует Git 2.10 или новее. Для дополнительной информации о параметрах команды ssh см. страницы man для ssh и ssh_config .

Использование разных учетных записей в одном экземпляре GitLab

Вы можете использовать несколько учетных записей для подключения к одному экземпляру GitLab. Вы можете сделать это с помощью команды из предыдущего раздела. Однако даже если вы установите IdentitiesOnly на да , вы не сможете войти в систему, если существует IdentityFile . вне блока Host .

Вместо этого вы можете назначить хостам псевдонимы в файле ~ .ssh / config .

  • Для хоста используйте псевдоним, например user_1.gitlab.com и user_2.gitlab.com . Расширенные конфигурации сложнее поддерживать, и эти строки легче понять, когда вы используете такие инструменты, как git remote .
  • Для IdentityFile используйте путь к закрытому ключу.
  # Идентификатор учетной записи User1
Хост 
  Имя хоста gitlab.com
  PreferredAuthentication публичный ключ
  IdentityFile ~ / .ssh / 

# User2 Account Identity
Хост 
  Имя хоста gitlab.com
  PreferredAuthentication публичный ключ
  IdentityFile ~ / .ssh / 
  

Теперь, чтобы клонировать репозиторий для user_1 , используйте user_1.gitlab.com в команде git clone :

  git clone git @ : gitlab-org / gitlab.мерзавец
  

Чтобы обновить ранее клонированный репозиторий с псевдонимом origin :

  git источник удаленного set-url git @ : gitlab-org / gitlab.git
  
note

Закрытый и открытый ключи содержат конфиденциальные данные. Убедитесь, что разрешения в файлах сделать их доступными для чтения, но недоступными для других.

Настроить двухфакторную аутентификацию (2FA)

Вы можете настроить двухфакторную аутентификацию (2FA) для Git через SSH.

Использование EGit на Eclipse

Если вы используете EGit, вы можете добавить свой SSH-ключ в Eclipse.

Использовать SSH в Microsoft Windows

Если вы используете Windows 10, вы можете использовать подсистему Windows для Linux (WSL). с WSL 2, который имеет предустановленные git и ssh , либо установите Git для Windows в используйте SSH через Powershell.

Ключ SSH, сгенерированный в WSL, напрямую недоступен для Git для Windows, и наоборот, поскольку оба имеют разные домашние каталоги:

  • WSL: / home / <пользователь>
  • Git для Windows: C: \ Users \

Вы можете скопировать .ssh / , чтобы использовать один и тот же ключ, или сгенерировать ключ в каждой среде.

Альтернативные инструменты включают:

Переопределение настроек SSH на сервере GitLab

GitLab интегрируется с установленным в системе демоном SSH и назначает пользователя (обычно называется git ), через который обрабатываются все запросы доступа. Пользователи которые подключаются к серверу GitLab через SSH, вместо этого идентифицируются своим SSH-ключом своего имени пользователя.

SSH клиент операции, выполняемые на сервере GitLab, выполняются как это Пользователь.Вы можете изменить эту конфигурацию SSH. Например, вы можете указать закрытый SSH-ключ, который этот пользователь будет использовать для запросов аутентификации. Однако эта практика не поддерживается и настоятельно не рекомендуется, поскольку он представляет собой значительную риски безопасности.

GitLab проверяет это условие и дает вам инструкции в этот раздел, если ваш сервер настроен таким образом. Например:

  $ gitlab-rake gitlab: проверить

У пользователя Git есть конфигурация SSH по умолчанию? ... нет
  Попробуйте исправить это:
  mkdir ~ / gitlab-check-backup-1504540051
  sudo mv / var / lib / git /.ssh / id_rsa ~ / gitlab-check-backup-1504540051
  sudo mv /var/lib/git/.ssh/id_rsa.pub ~ / gitlab-check-backup-1504540051
  Для получения дополнительной информации см .:
  [Переопределение настроек SSH на сервере GitLab] (# overriding-ssh-settings-on-the-gitlab-server)
  Исправьте ошибку, указанную выше, и повторите проверку.
  

Удалите пользовательскую конфигурацию как можно скорее. Эти настройки явно не поддерживаются и могут перестать работать в любой момент.

Устранение неполадок соединений SSH

Когда вы запускаете git clone , вам может быть предложено ввести пароль, например git @ gitlab.Пароль example.com: . Это указывает на то, что что-то не так с вашей настройкой SSH.

  • Убедитесь, что вы правильно сгенерировали пару ключей SSH и добавили общедоступный SSH ключ к вашему профилю GitLab.
  • Попробуйте вручную зарегистрировать свой закрытый ключ SSH с помощью ssh-agent .
  • Попробуйте отладить соединение, запустив ssh -Tv [email protected] . Замените example.com своим URL-адресом GitLab.

SSH-ключи - ArchWiki

Эту статью или раздел необходимо расширить.

Причина: Введение и Фон в разделе игнорируют перспективу сервера. (Обсудить в Обсуждении: ключи SSH) Ключи

SSH могут служить средством идентификации вас на сервере SSH с использованием криптографии с открытым ключом и аутентификации типа запрос-ответ. Основное преимущество аутентификации на основе ключей заключается в том, что в отличие от аутентификации по паролю она не подвержена атакам методом грубой силы, и вы не раскрываете действительные учетные данные, если сервер был скомпрометирован (см. RFC 4251 9.4.4).

Более того, аутентификация по ключу SSH может быть более удобной, чем более традиционная аутентификация по паролю. При использовании с программой, известной как агент SSH, ключи SSH могут позволить вам подключаться к серверу или нескольким серверам без необходимости запоминать или вводить пароль для каждой системы.

Аутентификация на основе ключей не лишена недостатков и может не подходить для всех сред, но во многих случаях она может предложить ряд серьезных преимуществ. Общее понимание того, как работают ключи SSH, поможет вам решить, как и когда их использовать для удовлетворения ваших потребностей.

В этой статье предполагается, что вы уже имеете базовое представление о протоколе Secure Shell и установили пакет openssh.

Фон

SSH-ключи всегда генерируются парами, один из которых известен как закрытый ключ, а другой - как открытый. Секретный ключ известен только вам и должен надежно храниться. В отличие от этого, открытый ключ может быть свободно передан любому серверу SSH, к которому вы хотите подключиться.

Если на SSH-сервере есть ваш открытый ключ в файле и он видит, что вы запрашиваете соединение, он использует ваш открытый ключ для создания и отправки вам запроса.Этот вызов представляет собой зашифрованное сообщение, и на него должен быть дан соответствующий ответ, прежде чем сервер предоставит вам доступ. Что делает это закодированное сообщение особенно безопасным, так это то, что его может понять только владелец закрытого ключа. Хотя открытый ключ можно использовать для шифрования сообщения, его нельзя использовать для расшифровки того же самого сообщения. Только вы, владелец закрытого ключа, сможете правильно понять задачу и дать правильный ответ.

Эта фаза запрос-ответ происходит за кулисами и невидима для пользователя.Пока у вас есть закрытый ключ, который обычно хранится в каталоге ~ / .ssh / , ваш SSH-клиент должен иметь возможность ответить серверу соответствующим ответом.

Закрытый ключ - это защищенный секрет, поэтому рекомендуется хранить его на диске в зашифрованном виде. Когда требуется зашифрованный закрытый ключ, сначала необходимо ввести парольную фразу, чтобы ее расшифровать. Хотя это может внешне выглядеть так, как будто вы предоставляете пароль для входа на сервер SSH, парольная фраза используется только для расшифровки закрытого ключа в локальной системе.Кодовая фраза не передается по сети.

Создание пары ключей SSH

Пара ключей SSH может быть сгенерирована с помощью команды ssh-keygen , по умолчанию используется 3072-битный RSA (и SHA256), который на странице руководства ssh-keygen (1) указывается как « обычно считается достаточным » и должен быть совместим практически со всеми клиентами и серверами:

 $ ssh-keygen
 
 Создание пары открытого / закрытого ключей RSA.
Введите файл, в котором нужно сохранить ключ (/ home /  /.ssh / id_rsa):
Введите кодовую фразу (пусто, если кодовая фраза отсутствует):
Введите ту же парольную фразу еще раз:
Ваш идентификатор был сохранен в / home / <имя пользователя> /.ssh/id_rsa.
Ваш открытый ключ был сохранен в / home / <имя пользователя> /.ssh/id_rsa.pub.
Ключевой отпечаток пальца:
SHA256: gGJtSsV8BM + 7w018d39Ji57F8iO6c0N2GZq3 / RY2NhI имя пользователя @ имя хоста
Изображение ключа randomart:
+ --- [RSA 3072] ---- +
| ооо. |
| оо +. |
| + +. + |
| о + + Е. |
| . . S. . = .o |
| . +. . B + @ o |
| +.oo * = O |
| . .. + = o + |
| о = ооо + |
+ ---- [SHA256] ----- + 

Изображение randomart было введено в OpenSSH 5.1 как более простое средство визуальной идентификации отпечатка ключа.

Примечание: Вы можете использовать переключатель -a , чтобы указать количество раундов KDF при шифровании пароля.

Вы также можете добавить дополнительное поле комментария к открытому ключу с помощью переключателя -C , чтобы его было легче идентифицировать в таких местах, как ~ /.ssh / known_hosts , ~ / .ssh / authorized_keys и ssh-add -L output. Например:

 $ ssh-keygen -C "$ (whoami) @ $ (uname -n) - $ (date -I)"
 

добавит комментарий о том, какой пользователь создал ключ на какой машине и когда.

Выбор типа ключа аутентификации

OpenSSH поддерживает несколько алгоритмов подписи (для ключей аутентификации), которые можно разделить на две группы в зависимости от используемых математических свойств:

  1. DSA и RSA, которые полагаются на практическую сложность факторизации произведения двух больших простых чисел,
  2. ECDSA и Ed25519, которые основаны на задаче дискретного логарифмирования эллиптической кривой.(пример)

Алгоритмы криптографии на основе эллиптических кривых (ECC) являются более поздним дополнением к криптосистемам с открытым ключом. Одним из их основных преимуществ является их способность обеспечивать тот же уровень безопасности с меньшими ключами, что обеспечивает менее ресурсоемкие операции (, т.е. более быстрое создание ключей, шифрование и дешифрование) и снижает требования к хранению и передаче.

OpenSSH 7.0 устарела и отключила поддержку ключей DSA из-за обнаруженных уязвимостей, поэтому выбор криптосистемы находится в пределах RSA или одного из двух типов ECC.

Ключи #RSA обеспечат максимальную переносимость, а ключи # Ed25519 обеспечат максимальную безопасность, но для этого требуются последние версии клиента и сервера [1]. #ECDSA, вероятно, более совместим, чем Ed25519 (хотя и меньше, чем RSA), но есть подозрения относительно его безопасности (см. Ниже).

Примечание: Эти ключи используются только для вашей аутентификации; выбор более сильных ключей не увеличит нагрузку на ЦП при передаче данных по SSH.

RSA

ssh-keygen по умолчанию использует RSA, поэтому нет необходимости указывать его с опцией -t .Он обеспечивает лучшую совместимость всех алгоритмов, но требует, чтобы размер ключа был больше для обеспечения достаточной безопасности.

Минимальный размер ключа составляет 1024 бита, по умолчанию - 3072 (см. Ssh-keygen (1)), а максимальный - 16384.

Если вы хотите создать более надежную пару ключей RSA (, например, для защиты от новейших или неизвестных атак и более сложных злоумышленников), просто укажите опцию -b с более высоким битовым значением, чем значение по умолчанию:

 $ ssh-keygen -b 4096
 

Однако имейте в виду, что использование более длинных ключей снижает отдачу.[2] [3] GnuPG FAQ гласит: « Если вам нужна более высокая степень защиты, чем предлагает RSA-2048, можно перейти на криптографию на основе эллиптических кривых, а не продолжать использовать RSA » [4].

С другой стороны, последняя итерация пакета B Cryptography NSA Fact Sheet Suite предлагает минимальный 3072-битный модуль для RSA, в то время как « [готовится] к предстоящему переходу на квантово-устойчивый алгоритм » [5].

ECDSA

Алгоритм цифровой подписи с эллиптической кривой (ECDSA) был представлен как предпочтительный алгоритм для аутентификации в OpenSSH 5.7. Некоторые поставщики также отключают необходимые реализации из-за потенциальных проблем с патентами.

Есть два вида проблем с этим:

  1. Политические проблемы , надежность кривых, построенных в NIST, подвергается сомнению после того, как выяснилось, что АНБ охотно вставляет бэкдоры в программное обеспечение, компоненты оборудования и опубликованные стандарты; известные криптографы выразили сомнения относительно того, как были построены кривые NIST, а добровольное заражение уже было доказано в прошлом.
  2. Технические проблемы , касающиеся сложности правильной реализации стандарта, а также медлительности и недостатков конструкции, которые снижают безопасность в недостаточно осторожных реализациях.

Обе эти проблемы лучше всего изложены во введении к libssh curve25519. Хотя политические проблемы все еще являются предметом обсуждения, существует четкое согласие с тем, что # Ed25519 технически лучше, и поэтому ему следует предпочесть.

Эд25519

Ed25519 был представлен в OpenSSH 6.5 января 2014 г .: « Ed25519 - это схема подписи с эллиптической кривой, которая обеспечивает лучшую безопасность, чем ECDSA и DSA, и хорошую производительность ». Его основными сильными сторонами являются скорость, постоянное время работы (и устойчивость к атакам по побочным каналам) и отсутствие туманных жестко запрограммированных констант. [6] См. Также это сообщение в блоге разработчика Mozilla о том, как это работает.

Он уже реализован во многих приложениях и библиотеках и является алгоритмом обмена ключами по умолчанию (который отличается от ключа подписи ) в OpenSSH.Пары ключей

Ed25519 могут быть сгенерированы с помощью:

 $ ssh-keygen -t ed25519
 

Размер ключа указывать не нужно, так как все ключи Ed25519 имеют 256 бит.

Имейте в виду, что старые клиенты и серверы SSH могут не поддерживать эти ключи.

FIDO / U2F
Поддержка аппаратного аутентификатора

FIDO / U2F была добавлена ​​в OpenSSH версии 8.2 для обеих схем подписи эллиптической кривой, упомянутых выше. Это позволяет аппаратному токену, подключенному через USB или другим способом, действовать вторым фактором наряду с закрытым ключом.

libfido2 требуется для поддержки аппаратных токенов.

Примечание. OpenSSH использует библиотеку промежуточного программного обеспечения для связи с аппаратным токеном и поставляется с внутренним промежуточным программным обеспечением, которое поддерживает токены USB. Другое промежуточное ПО может быть указано в директиве sshd_config (5) §SecurityKeyProvider или в переменной среды SSH_SK_PROVIDER для ssh-keygen и ssh-add .

После присоединения совместимого ключа FIDO может быть сгенерирована пара ключей:

 $ ssh-keygen -t ed25519-sk
 

Обычно вам потребуется ввести свой PIN-код и / или нажать свой токен, чтобы подтвердить создание.Для подключения к серверу обычно требуется коснуться вашего токена, если во время генерации не используется параметр командной строки -O no-touch-required и на сервере не установлен параметр sshd (8) §no-touch-required authorized_keys . Обратите внимание, что не все аппаратные токены поддерживают эту опцию.

Пара ключей на основе ECDSA также может быть сгенерирована с типом ключа ecdsa-sk , но соответствующие вопросы, указанные в разделе #ECDSA выше, по-прежнему остаются в силе.

Имейте в виду, что многие серверы SSH могут не поддерживать эти ключи.

Выбор местоположения ключа и парольной фразы

После выполнения команды ssh-keygen вам будет предложено ввести желаемое имя и расположение вашего закрытого ключа. По умолчанию ключи хранятся в каталоге ~ / .ssh / и называются в соответствии с типом используемого шифрования. Рекомендуется принять имя и расположение по умолчанию, чтобы последующие примеры кода в этой статье работали правильно.

Когда будет предложено ввести кодовую фразу, выберите то, что будет трудно угадать, если вы помните о безопасности вашего закрытого ключа.Более длинный и случайный пароль, как правило, будет надежнее и сложнее взломать, если он попадет в чужие руки.

Также возможно создать свой закрытый ключ без парольной фразы. Хотя это может быть удобно, вы должны осознавать связанные с этим риски. Без парольной фразы ваш закрытый ключ будет храниться на диске в незашифрованном виде. Любой, кто получит доступ к вашему файлу закрытого ключа, сможет принять вашу личность на любом SSH-сервере, к которому вы подключаетесь с использованием аутентификации на основе ключей.Кроме того, без парольной фразы вы также должны доверять пользователю root, так как он может обойти права доступа к файлам и сможет получить доступ к вашему незашифрованному файлу закрытого ключа в любое время.

Примечание: Раньше пароль закрытого ключа кодировался небезопасным способом: только один цикл хеширования MD5. OpenSSH 6.5 и более поздние версии поддерживают новый, более безопасный формат для кодирования вашего закрытого ключа. Этот формат используется по умолчанию, начиная с версии OpenSSH 7.8. Ключи Ed25519 всегда использовали новый формат кодирования.Чтобы перейти на новый формат, просто измените парольную фразу ключа, как описано в следующем разделе.
Изменение парольной фразы закрытого ключа без изменения ключа

Если изначально выбранная парольная фраза SSH нежелательна или должна быть изменена, можно использовать команду ssh-keygen , чтобы изменить парольную фразу без изменения фактического ключа. Это также можно использовать для изменения формата кодировки пароля в соответствии с новым стандартом.

 $ ssh-keygen -f ~ / .ssh / id_rsa -p
 
Управление несколькими ключами

Если у вас несколько идентификаторов SSH, вы можете установить разные ключи, которые будут использоваться для разных хостов или удаленных пользователей, с помощью директив Match и IdentityFile в вашей конфигурации:

 ~ /.ssh / config 
 Соответствует host = SERVER1
   ЛичностиТолько да
   IdentityFile ~ / .ssh / id_rsa_IDENTITY1

Соответствует host = SERVER2, SERVER3
   ЛичностиТолько да
   IdentityFile ~ / .ssh / id_ed25519_IDENTITY2 

Полное описание этих параметров см. В ssh_config (5).

Хранение ключей SSH на аппаратных токенах

Эту статью или раздел необходимо расширить.

SSH-ключи также могут храниться на токене безопасности, таком как смарт-карта или USB-токен. Это имеет то преимущество, что закрытый ключ надежно хранится на токене, а не на диске.При использовании токена безопасности конфиденциальный закрытый ключ также никогда не присутствует в оперативной памяти ПК; криптографические операции выполняются с самим токеном. Криптографический токен имеет дополнительное преимущество в том, что он не привязан к одному компьютеру; его можно легко снять с компьютера и носить с собой для использования на других компьютерах.

Примеры аппаратных токенов описаны в:

Копирование открытого ключа на удаленный сервер

Эту статью или раздел необходимо расширить.

После того, как вы сгенерировали пару ключей, вам нужно будет скопировать открытый ключ на удаленный сервер, чтобы он использовал аутентификацию по ключу SSH. Файл открытого ключа имеет то же имя, что и закрытый ключ, за исключением того, что к нему добавлено расширение .pub . Обратите внимание, что закрытый ключ не является общим и остается на локальном компьютере.

Простой метод

Примечание: Этот метод может не сработать, если удаленный сервер использует оболочку sh
, отличную от , такую ​​как tcsh по умолчанию, и использует OpenSSH старше 6.6.1п1. См. Этот отчет об ошибке.

Если ваш ключевой файл - ~ / .ssh / id_rsa.pub , вы можете просто ввести следующую команду.

 $ ssh-copy-id remote-server.org
 

Если ваше имя пользователя на удаленном компьютере отличается, не забудьте добавить имя пользователя, за которым следует @ , к имени сервера.

 $ ssh-copy-id [email protected]
 

Если имя файла открытого ключа отличается от значения по умолчанию ~ / .ssh / id_rsa.pub , вы получите сообщение об ошибке / usr / bin / ssh-copy-id: ОШИБКА: идентификационные данные не найдены .В этом случае вы должны явно указать расположение открытого ключа.

 $ ssh-copy-id -i ~ / .ssh / id_ed25519.pub имя пользователя@remote-server.org
 

Если сервер ssh прослушивает порт, отличный от порта по умолчанию 22, не забудьте включить его в аргумент хоста.

 $ ssh-copy-id -i ~ / .ssh / id_ed25519.pub -p 221 имя пользователя@remote-server.org
 

Ручной метод

По умолчанию для OpenSSH открытый ключ должен быть объединен с ~ / .ssh / authorized_keys .Начните с копирования открытого ключа на удаленный сервер.

 $ scp ~ / .ssh / id_ecdsa.pub имя пользователя@remote-server.org:
 

В приведенном выше примере открытый ключ ( id_ecdsa.pub ) копируется в ваш домашний каталог на удаленном сервере через scp . Не забудьте включить : в конце адреса сервера. Также обратите внимание, что имя вашего открытого ключа может отличаться от приведенного в примере.

На удаленном сервере вам необходимо создать файл ~ /.ssh , если он еще не существует, и добавьте свой открытый ключ в файл authorized_keys .

 $ ssh [email protected]
[email protected] пароль:
$ mkdir ~ / .ssh
$ chmod 700 ~ / .ssh
$ cat ~ / id_ecdsa.pub >> ~ / .ssh / authorized_keys
$ rm ~ / id_ecdsa.pub
$ chmod 600 ~ / .ssh / authorized_keys
 

Последние две команды удаляют файл открытого ключа с сервера и устанавливают разрешения для файла authorized_keys таким образом, чтобы он был доступен для чтения и записи только вам, владельцу.

Агенты SSH

Если ваш закрытый ключ зашифрован парольной фразой, эту парольную фразу необходимо вводить каждый раз, когда вы пытаетесь подключиться к SSH-серверу с использованием аутентификации с открытым ключом. Каждый отдельный вызов ssh или scp будет нуждаться в парольной фразе, чтобы расшифровать ваш закрытый ключ, прежде чем можно будет продолжить аутентификацию.

Агент SSH - это программа, которая кэширует ваши расшифрованные закрытые ключи и предоставляет их клиентским программам SSH от вашего имени.В этом случае вы должны указать свою парольную фразу только один раз при добавлении личного ключа в кэш агента. Это средство может быть очень удобным при частом подключении по SSH.

Агент обычно настроен на автоматический запуск при входе в систему и сохранение в течение всего сеанса входа в систему. Для достижения этого эффекта существует множество агентов, интерфейсов и конфигураций. В этом разделе представлен обзор ряда различных решений, которые можно адаптировать к вашим конкретным потребностям.

ssh-агент

ssh-agent - агент по умолчанию, включенный в OpenSSH. Его можно использовать напрямую или в качестве серверной части для некоторых интерфейсных решений, упомянутых далее в этом разделе. Когда запускается ssh-agent , он выполняет ветвление в фоновом режиме и печатает необходимые переменные среды. Например.

 $ ssh-агент 
 SSH_AUTH_SOCK = / tmp / ssh-vEGjCM2147 / agent.2147; экспорт SSH_AUTH_SOCK;
SSH_AGENT_PID = 2148; экспорт SSH_AGENT_PID;
echo Agent pid 2148; 

Чтобы использовать эти переменные, запустите команду через команду eval .

 $ eval $ (ssh-агент) 
 Агент pid 2157
 

После запуска ssh-agent вам нужно будет добавить свой закрытый ключ в его кеш:

 $ ssh-add ~ / .ssh / id_ed25519 
 Введите кодовую фразу для /home/user/.ssh/id_ed25519:
Идентификация добавлена: /home/user/.ssh/id_ed25519 (/home/user/.ssh/id_ed25519)
 

Если ваш закрытый ключ зашифрован, ssh-add предложит вам ввести кодовую фразу. После того, как ваш закрытый ключ будет успешно добавлен к агенту, вы сможете устанавливать SSH-соединения без необходимости вводить парольную фразу.

Совет: Чтобы все клиенты ssh , включая git , сохраняли ключи в агенте при первом использовании, добавьте параметр конфигурации AddKeysToAgent yes в ~ / .ssh / config . Другие возможные значения: подтвердить , спросить и нет (по умолчанию).

Чтобы агент запускался автоматически и был уверен, что одновременно выполняется только один процесс ssh-agent , добавьте следующее в свой ~ /.bashrc :

 если! pgrep -u "$ USER" ssh-agent> / dev / null; тогда
    ssh-agent -t 1h> "$ XDG_RUNTIME_DIR / ssh-agent.env"
фи
если [[ ! "$ SSH_AUTH_SOCK"]]; тогда
    источник "$ XDG_RUNTIME_DIR / ssh-agent.env"> / dev / null
фи
 

Это запустит процесс ssh-agent , если его еще нет, и сохранит его вывод. Если он уже запущен, мы получаем кэшированный вывод ssh-agent и оцениваем его, который устанавливает необходимые переменные среды.Срок службы разблокированных ключей составляет 1 час.

Также существует ряд внешних интерфейсов для ssh-agent и альтернативных агентов, описанных ниже в этом разделе, которые позволяют избежать этой проблемы.

Запустить ssh-agent с пользователем systemd

Для запуска агента можно использовать средства systemd / User. Используйте это, если вы хотите, чтобы ваш агент ssh запускался, когда вы вошли в систему, независимо от того, запущен ли x.

 ~ / .config / systemd / user / ssh-agent.сервис 
 [Единица]
Описание = ключевой агент SSH

[Услуга]
Тип = простой
Среда = SSH_AUTH_SOCK =% t / ssh-agent.socket
# ДИСПЛЕЙ необходим для работы ssh-askpass
Окружающая среда = ДИСПЛЕЙ =: 0
ExecStart = / usr / bin / ssh-agent -D -a $ SSH_AUTH_SOCK

[Установить]
WantedBy = default.target 

Затем экспортирует переменную среды SSH_AUTH_SOCK = "$ XDG_RUNTIME_DIR / ssh-agent.socket" в файл инициализации оболочки входа, например ~ / .bash_profile или ~ / .zprofile .

Наконец, включите или запустите службу с флагом --user .

Совет: При запуске агента через systemd, как описано выше, можно автоматически ввести парольную фразу ключа по умолчанию и добавить ее к агенту. См. Systemd-user-pam-ssh для подробностей.
ssh-agent как программа-оболочка

Альтернативный способ запуска ssh-agent (скажем, с каждым X-сеансом) описан в этом руководстве по ssh-agent от UC Berkeley Labs. Базовый вариант использования - если вы обычно начинаете X с команды startx , вы можете вместо этого префикс ssh-agent следующим образом:

 $ ssh-агент startx
 

Так что вам даже не нужно об этом думать, вы можете поставить псевдоним в свой .bash_aliases или аналог:

 псевдоним startx = 'ssh-agent startx'
 

Выполнение этого способа позволяет избежать проблемы, связанной с перемещением посторонних экземпляров ssh-agent между сеансами входа в систему. Ровно один экземпляр будет жить и умереть за весь сеанс X.

Примечание: В качестве альтернативы вызову ssh-agent startx вы можете добавить eval $ (ssh-agent) к ~ / .xinitrc .

См. Нижеприведенные примечания по использованию x11-ssh-askpass с ssh-add, чтобы узнать, как сразу добавить свой ключ к агенту.

Агент GnuPG

У gpg-agent есть эмуляция протокола OpenSSH Agent. См. Необходимую конфигурацию в GnuPG # SSH agent.

Брелок

Keychain - это программа, которая поможет вам легко управлять ключами SSH с минимальным вмешательством пользователя. Он реализован в виде сценария оболочки, который управляет как ssh-agent , так и ssh-add . Примечательной особенностью Keychain является то, что он может поддерживать один процесс ssh-agent для нескольких сеансов входа в систему.Это означает, что вам нужно вводить кодовую фразу только один раз при каждой загрузке вашего локального компьютера.

Установка

Установите пакет связки ключей.

Конфигурация
Предупреждение: По состоянию на 26 сентября 2015 г. параметр -Q, --quick имеет неожиданный побочный эффект, заключающийся в переключении keychain на вновь созданный ssh-agent при повторном входе в систему (по крайней мере, на систем, использующих GNOME), заставляя вас повторно добавить все ранее зарегистрированные ключи.

Добавьте строку, подобную следующей, в файл конфигурации оболочки, , например при использовании Bash:

 ~ / .bashrc 
 eval $ (связка ключей --eval --quiet id_ed25519 id_rsa ~ / .keys / my_custom_key)
 
Примечание: ~ / .bashrc используется вместо предложенного апстрима ~ / .bash_profile , потому что в Arch он создается как оболочками входа, так и оболочками без входа, что делает его подходящим как для текстовой, так и для графической среды. См. Bash # Invocation для получения дополнительной информации о различиях между ними.

В приведенном выше примере

  • линии вывода переключателя --eval должны быть оценены командой открытия eval ; это устанавливает необходимые переменные среды, чтобы клиент SSH мог найти ваш агент.
  • --quiet ограничит вывод предупреждениями, ошибками и подсказками пользователя.

В командной строке можно указать несколько ключей, как показано в примере. По умолчанию связка ключей будет искать пары ключей в ~ /.ssh / , но для ключей в нестандартном месте можно использовать абсолютный путь. Вы также можете использовать опцию --confhost , чтобы сообщить связке ключей, что нужно искать в ~ / .ssh / config параметры IdentityFile , определенные для определенных хостов, и использовать эти пути для поиска ключей.

См. Брелок - справка или брелок (1) для получения подробной информации о настройке брелка для других корпусов.

Чтобы протестировать Связку ключей, просто откройте новый эмулятор терминала или выйдите из системы и вернитесь в сеанс.Он должен запросить у вас парольную фразу для указанного закрытого ключа (ов) (если применимо) либо с помощью программы, установленной в $ SSH_ASKPASS , либо на терминале.

Поскольку Связка ключей повторно использует один и тот же процесс ssh-agent при последующих входах в систему, вам не придется вводить кодовую фразу при следующем входе в систему или открытии нового терминала. Вам будет предложено ввести кодовую фразу только один раз при каждой перезагрузке машины.

Подсказки
  • связка ключей ожидает, что файлы открытых ключей будут существовать в том же каталоге, что и их частные копии, с .pub расширение. Если закрытый ключ является символической ссылкой, открытый ключ можно найти рядом с символической ссылкой или в том же каталоге, что и цель символической ссылки (эта возможность требует, чтобы в системе была доступна команда readlink ).
  • , чтобы отключить графическую подсказку и всегда вводить кодовую фразу на терминале, используйте параметр --nogui . Это позволяет, например, скопировать длинные парольные фразы из диспетчера паролей.
  • , если вы не хотите, чтобы вам сразу предлагалось разблокировать ключи, а лучше подождать, пока они не понадобятся, используйте опцию --noask .
Примечание: Keychain может управлять ключами GPG таким же образом. По умолчанию он пытается запустить ssh-agent только , но вы можете изменить это поведение с помощью параметра --agents , например. - агенты ssh, gpg . См. Брелок (1).

x11-ssh-askpass

Пакет x11-ssh-askpass предоставляет графический диалог для ввода пароля при запуске X-сеанса. x11-ssh-askpass зависит только от библиотек libx11 и libxt, а внешний вид x11-ssh-askpass можно настроить.Хотя он может быть вызван программой ssh-add , которая затем загрузит ваши расшифрованные ключи в ssh-agent, следующие инструкции вместо этого настроят x11-ssh-askpass для вызова вышеупомянутым сценарием Keychain.

Установите пакеты keychain и x11-ssh-askpass.

Отредактируйте файл ~ / .xinitrc , включив в него следующие строки, при необходимости заменив имя и расположение вашего закрытого ключа. Обязательно поместите эти команды перед строкой, вызывающей ваш оконный менеджер.

 ~ / .xinitrc 
 брелок ~ / .ssh / id_ecdsa
[-f ~ / .keychain / $ HOSTNAME-sh] &&. ~ / .keychain / $ HOSTNAME-sh 2> / dev / null
[-f ~ / .keychain / $ HOSTNAME-sh-gpg] &&. ~ / .keychain / $ HOSTNAME-sh-gpg 2> / dev / null
...
Выполнить openbox-сессию 

В приведенном выше примере первая строка вызывает связку ключей и передает имя и расположение вашего закрытого ключа. Если это не первый вызов keychain , следующие две строки загружают содержимое $ HOSTNAME-sh и $ HOSTNAME-sh-gpg , если они существуют.В этих файлах хранятся переменные среды предыдущего экземпляра цепочки ключей .

Вызов x11-ssh-askpass с помощью ssh-add

На странице руководства ssh-add указано, что помимо необходимости определения переменной DISPLAY , вам также необходимо установить SSH_ASKPASS на имя вашей программы askpass (в данном случае x11-ssh-askpass ). Следует иметь в виду, что установка Arch Linux по умолчанию помещает двоичный файл x11-ssh-askpass в / usr / lib / ssh / , чего не будет в PATH большинства людей.Это немного раздражает не только при объявлении переменной SSH_ASKPASS , но и при создании тем. Вы должны везде указывать полный путь. Оба неудобства можно решить одновременно, установив символическую ссылку:

 $ ln -sv / usr / lib / ssh / x11-ssh-askpass ~ / bin / ssh-askpass
 

Предполагается, что ~ / bin находится в вашем PATH . Итак, теперь в вашем .xinitrc , прежде чем вызывать ваш оконный менеджер, нужно просто экспортировать переменную среды SSH_ASKPASS :

 $ экспорт SSH_ASKPASS = ssh-askpass
 

, и ваши ресурсы X будут содержать что-то вроде:

 ssh-askpass * фон: # 000000
 

Этот способ хорошо работает с описанным выше методом использования ssh-agent в качестве программы-оболочки.Вы запускаете X с ssh-agent startx , а затем добавляете ssh-add в список запускаемых программ вашего оконного менеджера.

Темы

Внешний вид диалогового окна x11-ssh-askpass можно настроить, установив связанные с ним ресурсы X. Некоторыми примерами являются файлы .ad по адресу https://github.com/sigmavirus24/x11-ssh-askpass. См. X11-ssh-askpass (1) для получения полной информации.

Альтернативные диалоговые окна парольной фразы

Существуют и другие программы диалога с паролями, которые можно использовать вместо x11-ssh-askpass .В следующем списке представлены некоторые альтернативные решения.

пам_сш

Проект pam_ssh существует для предоставления подключаемого модуля аутентификации (PAM) для закрытых ключей SSH. Этот модуль может обеспечивать единый вход для ваших SSH-соединений. При входе в систему можно ввести парольную фразу закрытого ключа SSH вместо традиционного системного пароля или в дополнение к нему. После того, как вы прошли аутентификацию, модуль pam_ssh запускает ssh-agent для хранения вашего расшифрованного закрытого ключа на время сеанса.

Чтобы включить режим единого входа в приглашении входа на tty, установите неофициальный пакет pam_ssh AUR .

Примечание. pam_ssh 2.0 теперь требует, чтобы все закрытые ключи, используемые в процессе аутентификации, располагались в папке ~ / .ssh / login-keys.d / .

Создайте символическую ссылку на свой файл закрытого ключа и поместите ее в ~ / .ssh / login-keys.d / . Замените id_rsa в приведенном ниже примере на имя вашего собственного файла закрытого ключа.

 $ mkdir ~ / .ssh / login-keys.d /
$ cd ~ / .ssh / ключи входа в систему.d /
$ ln -s ../id_rsa
 

Отредактируйте файл конфигурации /etc/pam.d/login , включив в него текст, выделенный жирным шрифтом в примере ниже. Порядок, в котором появляются эти строки, важен и может повлиять на поведение при входе в систему.

Предупреждение: Неправильная настройка PAM может привести к тому, что система окажется в состоянии, когда все пользователи будут заблокированы. Прежде чем вносить какие-либо изменения, вы должны понимать, как работает конфигурация PAM, а также о средствах резервного копирования для доступа к файлам конфигурации PAM, например, Arch Live CD, на случай, если вы заблокированы и вам нужно отменить любые изменения.Доступна статья IBM developerWorks, в которой более подробно объясняется конфигурация PAM.
 /etc/pam.d/login 
 #% ПАМ-1.0

требуется авторизация pam_securetty.so
реквизит авторизации pam_nologin.so
auth включает систему-локальный-логин
  auth необязательно pam_ssh.so try_first_pass 
учетная запись включает систему-локальный-логин
сеанс включает систему-локальный-логин
  сеанс опционально pam_ssh.so  

В приведенном выше примере аутентификация при входе в систему первоначально выполняется как обычно, при этом пользователю предлагается ввести свой пароль.Дополнительное правило аутентификации auth , добавленное в конец стека аутентификации, затем инструктирует модуль pam_ssh попытаться расшифровать любые закрытые ключи, найденные в каталоге ~ / .ssh / login-keys.d . Параметр try_first_pass передается модулю pam_ssh, инструктируя его сначала попытаться расшифровать любые закрытые ключи SSH, используя ранее введенный пароль пользователя. Если кодовая фраза закрытого ключа пользователя и пароль пользователя совпадают, это должно быть успешным, и пользователю не будет предлагаться ввести один и тот же пароль дважды.В случае, если пароль пользователя секретного ключа парольной фразы отличается, модуль pam_ssh предложит пользователю ввести парольную фразу SSH после ввода пароля пользователя. Необязательное контрольное значение гарантирует, что пользователи без закрытого ключа SSH все еще смогут войти в систему. Таким образом, использование pam_ssh будет прозрачным для пользователей без закрытого ключа SSH.

Если вы используете другое средство входа в систему, например, диспетчер отображения X11, например SLiM или XDM, и хотите, чтобы он предоставлял аналогичные функции, вы должны аналогичным образом отредактировать связанный с ним файл конфигурации PAM.Пакеты, обеспечивающие поддержку PAM, обычно помещают файл конфигурации по умолчанию в каталог /etc/pam.d/ .

Дополнительные сведения об использовании pam_ssh и список его параметров можно найти на странице руководства pam_ssh (8).

Использование другого пароля для разблокировки ключа SSH

Если вы хотите разблокировать ключи SSH или нет, в зависимости от того, используете ли вы ключевую фразу или (другой!) Пароль для входа, вы можете изменить /etc/pam.d/system-auth на

 / etc / pam.d / system-auth 
 #% ПАМ-1.0

  auth [success = 1 new_authtok_reqd = 1 ignore = ignore default = ignore] pam_unix.so try_first_pass nullok 
  требуется авторизация pam_ssh.so use_first_pass 
auth необязательный pam_permit.so
требуется авторизация pam_env.so

необходим аккаунт pam_unix.so
аккаунт необязательный pam_permit.so
требуется учетная запись pam_time.so

требуется пароль pam_unix.so try_first_pass nullok sha512 shadow
пароль необязательный pam_permit.so

требуется сеанс pam_limits.так
требуется сеанс pam_unix.so
сеанс необязательный pam_permit.so
  сеанс опционально pam_ssh.so  

Объяснение см. В [7].

Известные проблемы с pam_ssh

Работа над проектом pam_ssh ведется нечасто, а предоставленная документация немногочисленна. Вы должны знать о некоторых его ограничениях, которые не упоминаются в самом пакете.

  • Версии pam_ssh до версии 2.0 не поддерживают ключи SSH, использующие более новую опцию криптографии ECDSA (эллиптическая кривая).Если вы используете более ранние версии pam_ssh, вы должны использовать ключи RSA или DSA.
  • Процесс ssh-agent , порожденный pam_ssh, не сохраняется между входами пользователей в систему. Если вы хотите, чтобы сеанс GNU Screen между входами в систему оставался активным, при повторном подключении к сеансу экрана вы можете заметить, что он больше не может взаимодействовать с ssh-agent. Это связано с тем, что среда GNU Screen и ее дочерние элементы по-прежнему будут ссылаться на экземпляр ssh-agent, который существовал при вызове GNU Screen, но впоследствии был отключен при предыдущем выходе из системы.Внешний интерфейс Keychain позволяет избежать этой проблемы, поддерживая активность процесса ssh-agent между входами в систему.

pam_exec-ssh

В качестве альтернативы pam_ssh вы можете использовать pam_exec-ssh AUR . Это сценарий оболочки, который использует pam_exec. Справку по настройке можно найти в апстриме.

Брелок GNOME

Если вы используете рабочий стол GNOME, инструмент GNOME Keyring можно использовать в качестве агента SSH. См. Статью о связке ключей GNOME для получения дополнительных сведений.

Хранение ключей SSH с помощью Kwallet

Инструкции по использованию kwallet для хранения ключей SSH см. В разделе Кошелек KDE # Использование кошелька KDE для хранения парольных фраз ssh.

KeePass2 с плагином KeeAgent

KeeAgent - это плагин для KeePass, который позволяет использовать ключи SSH, хранящиеся в базе данных KeePass, для аутентификации SSH другими программами.

  • Поддерживает форматы закрытых ключей PuTTY и OpenSSH.
  • Работает с собственным агентом SSH в Linux / Mac и с PuTTY в Windows.

См. Установку плагина KeePass # в KeePass или установите пакет keepass-plugin-keeagent.

Этот агент можно использовать напрямую, сопоставив сокет KeeAgent: KeePass -> Инструменты -> Параметры -> KeeAgent -> Файл сокета режима агента ->% XDG_RUNTIME_DIR% / keeagent.розетка - и переменная окружения: экспорт SSH_AUTH_SOCK = "$ XDG_RUNTIME_DIR" '/ keeagent.socket' .

KeePassXC

Вилка KeePassXC для KeePass по умолчанию поддерживает использование в качестве агента SSH. Он также совместим с форматом базы данных KeeAgent.

Поиск и устранение неисправностей

Ключ игнорируется сервером

  • Если выясняется, что сервер SSH игнорирует ваши ключи, убедитесь, что у вас установлены надлежащие разрешения для всех соответствующих файлов.
Для локального компьютера:
 $ chmod 700 ~ / .ssh
$ chmod 600 ~ / .ssh /  ключ 
 
Для удаленной машины:
 $ chmod 700 ~ / .ssh
$ chmod 600 ~ / .ssh / authorized_keys
 
Для удаленного компьютера также проверьте, что домашний каталог целевого пользователя имеет правильные разрешения (он должен быть доступен для записи , а не для группы и других пользователей):
 $ chmod go-w / home /  target_user 
 
  • Если это не решит проблему, вы можете попробовать временно установить StrictModes на без в / etc / ssh / sshd_config .Если проверка подлинности с использованием StrictModes off прошла успешно, вероятно, проблема с правами доступа к файлам сохраняется.
  • Убедитесь, что ключи в ~ / .ssh / authorized_keys введены правильно и используют только одну строку.
  • Убедитесь, что удаленная машина поддерживает тип ключей, которые вы используете: некоторые серверы не поддерживают ключи ECDSA, попробуйте вместо них использовать ключи RSA или DSA, см. # Создание пары ключей SSH.
  • Вы можете использовать режим отладки и контролировать вывод при подключении:
 # / usr / bin / sshd -d
 
  • Если вы дали другому ключу имя, например id_rsa_server , вам необходимо подключиться с опцией -i :
 $ ssh -i id_rsa_server user @ server
 

См. Также

.
Обновлено: 25.09.2021 — 08:10

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *