Ключи ssh
В SSH поддерживается четыре алгоритма аутентификации по открытым ключам:
- DSA,
- размер ключей DSA не может превышать 1024, его следует отключить
- следует создавать ключ большого размера: 4096 бит
- ECDSA завязан на технологиях NIST, его следует отключить
- используется пока не везде
1.1.1 Отключение ключей у сервера sshd
- Ключи отключаются у сервера.
- Если просто удалить ключ, он будет повторно создан при перезапуске демона.
- Можно воспользоваться обходным путём с создать заведомо нерабочую символическую ссылку, которая помешает создать и использовать ключ:
1.1.2 Создание серверных ключей
- Для RSA следует создать ключ большего размера:
1.1.3 Создание клиентских ключей
- Для создания клиентских ключей лучше использовать команды:
1.2 Симметричные шифры
- Из 15 поддерживаемых в SSH алгоритмов симметричного шифрования, безопасными можно считать:
- chacha20-poly1305 ;
- aes*-ctr ;
- aes*-gcm .
1.2.1 Конфигурация сервера
- В /etc/ssh/sshd_config рекомендуется добавить:
1.2.2 Конфигурация для клиентов
- В /etc/ssh/ssh_config рекомендуется добавить:
1.3 Обмен ключами
- Применяемые в SSH методы обмена ключей DH (Diffie-Hellman) и ECDH (Elliptic Curve Diffie-Hellman) можно считать безопасными.
- Из 8 поддерживаемых в SSH протоколов обмена ключами вызывают подозрения три, основанные на рекомендациях NIST:
- ecdh-sha2-nistp256 ;
- ecdh-sha2-nistp384 ;
- ecdh-sha2-nistp521 .
1.3.1 Настройка сервера
- В /etc/ssh/sshd_config рекомендуется указать:
1.3.2 Настройка клиента
- В /etc/ssh/ssh_config рекомендуется добавить
2 Файлы ssh-ключей
По умолчанию пользовательские ssh-ключи сохраняются в каталоге
/.ssh в домашнем каталоге пользователя.
Убедитесь, что у вас ещё нет ключа.
Файлы закрытых ключей имеют названия типа id_<алгоритм> (например, id_dsa , id_rsa ).
First why you need this.
When working with a GitHub repository, you’ll often need to identify yourself to GitHub using your username and password. An SSH key is an alternate way to identify yourself that doesn’t require you to enter your username and password every time
SSH keys come in pairs, a public key that gets shared with services like GitHub, and a private key that is stored only on your computer. If the keys match, you’re granted access.
The cryptography behind SSH keys ensures that no one can reverse engineer your private key from the public one.
Steps to generate SSH key at your end. Open your Mac’s terminal.
Paste the text below, substituting in your GitHub email address.
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
This creates a new ssh key, using the provided email as a label.
> Generating public/private rsa key pair.
When you’re prompted to “Enter a file in which to save the key,” press Enter. This accepts the default file location.
> Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
At the prompt, type a secure passphrase. For more information, see “Working with SSH key passphrases”.
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
Copy your generated key in the Clipboard.
Steps to add your Mac’s SSH key in your Github account.
In the upper-right corner of any page, click your profile photo, then click Settings.
In the user settings sidebar, click SSH and GPG keys.
Click New SSH key or Add SSH key.
In the “Title” field, add a descriptive label for the new key. For example, if you’re using a personal Mac, you might call this key “Personal MacBook Air”.
Paste your key into the “Key” field.
Click Add SSH key.
If prompted, confirm your GitHub Enterprise password.
You can have multiple keys correlate your multiple Mac’s to your Github account. It will show up as below once done.
Thoughts? Feedback? Disagreements? Twitter me: @kiranjasvanee, Skype me:kiranjasvanee
If you enjoyed reading this post, please share and clap so others can find it .
You can follow me on Medium for fresh articles.
4.3 Git on the Server — Generating Your SSH Public Key
Many Git servers authenticate using SSH public keys. In order to provide a public key, each user in your system must generate one if they don’t already have one. This process is similar across all operating systems. First, you should check to make sure you don’t already have a key. By default, a user’s SSH keys are stored in that user’s
/.ssh directory. You can easily check to see if you have a key already by going to that directory and listing the contents:
You’re looking for a pair of files named something like id_dsa or id_rsa and a matching file with a .pub extension. The .pub file is your public key, and the other file is the corresponding private key. If you don’t have these files (or you don’t even have a .ssh directory), you can create them by running a program called ssh-keygen , which is provided with the SSH package on Linux/macOS systems and comes with Git for Windows:
First it confirms where you want to save the key ( .ssh/id_rsa ), and then it asks twice for a passphrase, which you can leave empty if you don’t want to type a password when you use the key. However, if you do use a password, make sure to add the -o option; it saves the private key in a format that is more resistant to brute-force password cracking than is the default format. You can also use the ssh-agent tool to prevent having to enter the password each time.
Now, each user that does this has to send their public key to you or whoever is administrating the Git server (assuming you’re using an SSH server setup that requires public keys). All they have to do is copy the contents of the .pub file and email it. The public keys look something like this:
Generating a new SSH key and adding it to the ssh-agent
After you’ve checked for existing SSH keys, you can generate a new SSH key to use for authentication, then add it to the ssh-agent.
Сведения о парольных фразах ключа SSH
Доступ к данным и их запись в репозиториях в GitHub.com с помощью SSH (протокол Secure Shell). При подключении через SSH проверка подлинности выполняется с помощью файла закрытого ключа на локальном компьютере. Дополнительные сведения см. в разделе About SSH.
При создании ключа SSH можно добавить парольную фразу для расширенной защиты ключа. При использовании ключа необходимо ввести парольную фразу. Если ключ имеет парольную фразу, и вы не хотите вводить парольную фразу при каждом использовании ключа, можно добавить ключ в агент SSH. Агент SSH управляет ключами SSH и запоминает парольную фразу.
Если у вас еще нет ключа SSH, необходимо создать новый ключ SSH для проверки подлинности. Если вы не уверены, есть ли у вас ключ SSH, можно проверить наличие существующих ключей. Дополнительные сведения см. в разделе Checking for existing SSH keys.
Чтобы использовать аппаратный ключ безопасности для проверки подлинности в GitHub, необходимо создать новый ключ SSH для аппаратного ключа безопасности. При проверке подлинности с помощью пары ключей необходимо подключить аппаратный ключ безопасности к компьютеру. Дополнительные сведения см. в заметках о выпуске OpenSSH 8.2.
Создание нового ключа SSH
Вы можете создать новый ключ SSH на локальном компьютере. После создания ключа вы можете добавить ключ в учетную запись GitHub.com, чтобы включить проверку подлинности для операций Git по протоколу SSH.
Примечание. GitHub улучшили безопасность за счет удаления старых небезопасных типов ключей 15 марта 2022 г.
По состоянию на эту дату ключи DSA ( ssh-dss ) больше не поддерживаются. Вы не можете добавить новые ключи DSA в личную учетную запись в GitHub.com.
Ключи RSA ( ssh-rsa ) с valid_after до 2 ноября 2021 г. могут продолжать использовать любой алгоритм подписи. Ключи RSA, созданные после этой даты, должны использовать алгоритм подписи SHA-2. Для использования сигнатур SHA-2 может потребоваться обновить некоторые старые клиенты.
Откройте Терминал Терминал GIT Bash .
Вставьте приведенный ниже текст, указав свой адрес электронной почты GitHub.
Примечание. Если вы используете устаревшую систему, которая не поддерживает алгоритм Ed25519, используйте следующую команду:
В результате будет создан новый ключ SSH, где в качестве метки будет использоваться указанный адрес электронной почты.
При появлении запроса «Введите файл, в котором нужно сохранить ключ», вы можете нажать клавишу ВВОД , чтобы принять расположение файла по умолчанию. Обратите внимание, что если вы создали ключи SSH ранее, ssh-keygen может попросить вас переписать другой ключ. В этом случае рекомендуется создать ключ SSH с пользовательским именем. Для этого введите расположение файла по умолчанию и замените id_ssh_keyname именем пользовательского ключа.
В командной строке введите безопасную парольную фразу. Дополнительные сведения см. в разделе Работа с парольными фразами ключей SSH.
Добавление ключа SSH в ssh-agent
Перед добавлением нового ключа SSH в ssh-agent для управления ключами необходимо проверить наличие существующих ключей SSH и создать новый ключ SSH. При добавлении ключа SSH в агент используйте команду macOS ssh-add по умолчанию, а не приложение, установленное macports, homebrew или другим внешним источником.
Запустите агент SSH в фоновом режиме.
В зависимости от среды может потребоваться использовать другую команду. Например, вам может потребоваться доступ с правами root, для чего необходимо выполнить sudo -s -H перед запуском агента SSH. Может также потребоваться использовать exec ssh-agent bash или exec ssh-agent zsh для запуска агента SSH.
Если вы используете macOS Sierra 10.12.2 или более поздней версии, необходимо внести изменения в файл
/.ssh/config , чтобы автоматически загружать ключи в ssh-agent и хранить парольные фразы в цепочке ключей.
Сначала проверьте, существует ли файл
/.ssh/config в расположении по умолчанию.
Если файл не существует, создайте файл.
/.ssh/config , а затем внесите в него изменения, чтобы он содержал следующие строки. Если файл ключа SSH имеет другое имя или путь, отличный от примера кода, измените имя файла или путь в соответствии с текущей настройкой.
Примечания.
Если вы решили не добавлять парольную фразу к ключу, следует опустить строку UseKeychain .
Если появится сообщение об ошибке Bad configuration option: usekeychain , добавьте дополнительную строку в раздел конфигурации Host *.github.com .
Добавьте закрытый ключ SSH в ssh-agent и сохраните парольную фразу в цепочке ключей. Если вы создали ключ с другим именем или добавляете существующий ключ с другим именем, замените id_ed25519 в команде на имя файла закрытого ключа.
Примечание: Параметр —apple-use-keychain сохраняет парольную фразу в цепочке ключей при добавлении ключа SSH в ssh-agent. Если вы решили не добавлять парольную фразу в ключ, выполните команду без параметра —apple-use-keychain .
Параметр —apple-use-keychain находится в стандартной версии ssh-add Apple . В версиях MacOS до Monterey (12.0) —apple-use-keychain флаги и —apple-load-keychain использовали синтаксис -K и -A соответственно.
Если у вас не установлена стандартная версия ssh-add Apple, может возникнуть ошибка. Дополнительные сведения см. в разделе Error: ssh-add: illegal option — K.
Добавьте ключ SSH в учетную запись GitHub. Дополнительные сведения см. в разделе Adding a new SSH key to your GitHub account.
Если у вас установлено приложение GitHub Desktop, его можно использовать для клонирования репозиториев, не прибегая к ключам SSH.
Убедитесь, что ssh-agent запущен. Можно воспользоваться инструкциями по автоматическому запуску агента в разделе Работа с парольными фразами ключа SSH или запустить его вручную:
Добавьте закрытый ключ SSH в ssh-agent. Если вы создали ключ с другим именем или добавляете существующий ключ с другим именем, замените id_ed25519 в команде на имя файла закрытого ключа.
Добавьте ключ SSH в учетную запись GitHub. Дополнительные сведения см. в разделе Adding a new SSH key to your GitHub account.
Запустите агент SSH в фоновом режиме.
В зависимости от среды может потребоваться использовать другую команду. Например, вам может потребоваться доступ с правами root, для чего необходимо выполнить sudo -s -H перед запуском агента SSH. Может также потребоваться использовать exec ssh-agent bash или exec ssh-agent zsh для запуска агента SSH.
Добавьте закрытый ключ SSH в ssh-agent. Если вы создали ключ с другим именем или добавляете существующий ключ с другим именем, замените id_ed25519 в команде на имя файла закрытого ключа.
Добавьте ключ SSH в учетную запись GitHub. Дополнительные сведения см. в разделе Adding a new SSH key to your GitHub account.
Создание нового ключа SSH для аппаратного ключа безопасности
В macOS или Linux перед созданием нового ключа SSH может потребоваться обновить клиент SSH или установить новый клиент SSH. Дополнительные сведения см. в разделе Error: Unknown key type.
Вставьте аппаратный ключ безопасности в компьютер.
Откройте Терминал Терминал GIT Bash .
Вставьте приведенный ниже текст, указав адрес электронной почты своей учетной записи GitHub.
Примечание. Если команда завершается ошибкой invalid format или feature not supported, , возможно, используется аппаратный ключ безопасности, который не поддерживает алгоритм Ed25519. Введите приведенную ниже команду.
При появлении соответствующего запроса нажмите кнопку на аппаратном ключе безопасности.
При появлении запроса «Введите файл, в который нужно сохранить клавишу», нажмите клавишу ВВОД, чтобы принять расположение файла по умолчанию.
При появлении соответствующего запроса введите парольную фразу и нажмите клавишу ВВОД.
Добавьте ключ SSH в учетную запись на сайте GitHub. Дополнительные сведения см. в разделе Adding a new SSH key to your GitHub account.