- 4.3 Git на сервере — Генерация открытого SSH ключа
- Генерация открытого SSH ключа
- 4.3 Git on the Server — Generating Your SSH Public Key
- Generating Your SSH Public Key
- What is an SSH KEY?
- How to Create an SSH Key
- Generate an SSH Key on Mac and Linux
- Generate an SSH Key on Windows
- Windows Linux Subsystem
- Summary
- Использование проверки подлинности с ключом SSH
- Как работает проверка подлинности SSH-ключа
- Настройка проверки подлинности ключей SSH
- Шаг 1. Создание ключей SSH
- шаг 2. добавление открытого ключа в Azure DevOps Services/тфс
- Шаг 2. Добавление открытого ключа в Azure DevOps
- Шаг 3. Клонирование репозитория Git с помощью SSH
- Вопросы и устранение неполадок
- Вопрос. После выполнения git clone я получаю следующую ошибку. Что следует делать?
- Вопрос. как с помощью Git запоминать парольную фразу для моего ключа на Windows?
- Вопрос. я использую в качестве моего клиента SSH ввод и создал ключи с помощью PuTTYgen. Можно ли использовать эти ключи с Azure DevOps Services?
- Вопрос. Как убедиться, что открытый ключ, который я отправил, имеет тот же ключ, что и локальный?
- Вопрос. как начать использовать SSH в репозитории, где сейчас используется протокол HTTPS?
- вопрос. я использую Git LFS с Azure DevOps Services и получаю сообщения об ошибках при получении файлов, отслеживаниющих с помощью Git LFS.
- Вопрос. как использовать расположение ключа не по умолчанию, т. е. not/.СШ/id_rsa и
- Вопрос. у меня несколько ключей SSH. Разделы справки использовать разные ключи SSH для разных серверов SSH или репозиториев?
- Вопрос. Разделы справки исправить ошибки с упоминанием «не найден соответствующий метод обмена ключами»?
- Вопрос. какие уведомления могут получать сведения о ключах SSH?
- Вопрос. что делать, если я полагаю, что кто-то, помимо меня, добавляет ключи SSH в мою учетную запись?
- Вопрос. что делать, если у меня по-прежнему запрашиваются пароль и GIT_SSH_COMMAND=»ssh -v» git fetch отображается no mutual signature algorithm ?
4.3 Git на сервере — Генерация открытого SSH ключа
Генерация открытого SSH ключа
Как отмечалось ранее, многие Git-серверы используют аутентификацию по открытым SSH-ключам. Для того чтобы предоставить открытый ключ, каждый пользователь в системе должен его сгенерировать, если только этого уже не было сделано ранее. Этот процесс аналогичен во всех операционных системах. Сначала вам стоит убедиться, что у вас ещё нет ключа. По умолчанию пользовательские SSH ключи сохраняются в каталоге
/.ssh домашнем каталоге пользователя. Вы можете легко проверить наличие ключа перейдя в этот каталог и посмотрев его содержимое:
Ищите файл с именем id_dsa или id_rsa и соответствующий ему файл с расширением .pub . Файл с расширением .pub — это ваш открытый ключ, а второй файл — ваш приватный ключ. Если указанные файлы у вас отсутствуют (или даже нет каталога .ssh ), вы можете создать их используя программу ssh-keygen , которая входит в состав пакета SSH в системах Linux/Mac, а для Windows поставляется вместе с Git:
Сначала программа попросит указать расположение файла для сохранения ключа ( .ssh/id_rsa ), затем дважды ввести пароль для шифрования. Если вы не хотите вводить пароль каждый раз при использовании ключа, то можете оставить его пустым или использовать программу ssh-agent . Если вы решили использовать пароль для приватного ключа, то настоятельно рекомендуется использовать опцию -o , которая позволяет сохранить ключ в формате, более устойчивом ко взлому методом подбора, чем стандартный формат.
Теперь каждый пользователь должен отправить свой открытый ключ вам или тому, кто администрирует Git-сервер (подразумевается, что ваш SSH-сервер уже настроен на работу с открытыми ключами). Для этого достаточно скопировать содержимое файла с расширением .pub и отправить его по электронной почте. Открытый ключ выглядит примерно так:
Источник
4.3 Git on the Server — Generating Your SSH Public Key
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:
Источник
What is an SSH KEY?
An SSH key is an access credential for the SSH (secure shell) network protocol. This authenticated and encrypted secure network protocol is used for remote communication between machines on an unsecured open network. SSH is used for remote file transfer, network management, and remote operating system access. The SSH acronym is also used to describe a set of tools used to interact with the SSH protocol.
SSH uses a pair of keys to initiate a secure handshake between remote parties. The key pair contains a public and private key. The private vs public nomenclature can be confusing as they are both called keys. It is more helpful to think of the public key as a «lock» and the private key as the «key». You give the public ‘lock’ to remote parties to encrypt or ‘lock’ data. This data is then opened with the ‘private’ key which you hold in a secure place.
How to Create an SSH Key
SSH keys are generated through a public key cryptographic algorithm, the most common being RSA or DSA. At a very high level SSH keys are generated through a mathematical formula that takes 2 prime numbers and a random seed variable to output the public and private key. This is a one-way formula that ensures the public key can be derived from the private key but the private key cannot be derived from the public key.
SSH keys are created using a key generation tool. The SSH command line tool suite includes a keygen tool. Most git hosting providers offer guides on how to create an SSH Key.
Generate an SSH Key on Mac and Linux
Both OsX and Linux operating systems have comprehensive modern terminal applications that ship with the SSH suite installed. The process for creating an SSH key is the same between them.
1. execute the following to begin the key creation
This command will create a new SSH key using the email as a label
2. You will then be prompted to «Enter a file in which to save the key.»
You can specify a file location or press “Enter” to accept the default file location.
3. The next prompt will ask for a secure passphrase.
A passphrase will add an additional layer of security to the SSH and will be required anytime the SSH key is used. If someone gains access to the computer that private keys are stored on, they could also gain access to any system that uses that key. Adding a passphrase to keys will prevent this scenario.
At this point, a new SSH key will have been generated at the previously specified file path.
4. Add the new SSH key to the ssh-agent
The ssh-agent is another program that is part of the SSH toolsuite. The ssh-agent is responsible for holding private keys. Think of it like a keychain. In addition to holding private keys it also brokers requests to sign SSH requests with the private keys so that private keys are never passed around unsecurly.
Before adding the new SSH key to the ssh-agent first ensure the ssh-agent is running by executing:
Once the ssh-agent is running the following command will add the new SSH key to the local SSH agent.
The new SSH key is now registered and ready to use!
Generate an SSH Key on Windows
Windows environments do not have a standard default unix shell. External shell programs will need to be installed for to have a complete keygen experience. The most straight forward option is to utilize Git Bash. Once Git Bash is installed the same steps for Linux and Mac can be followed within the Git Bash shell.
Windows Linux Subsystem
Modern windows environments offer a windows linux subsystem. The windows linux subsystem offers a full linux shell within a traditional windows environment. If a linux subsystem is available the same steps previously discussed for Linux and Mac can be followed with in the windows linux subsystem.
Summary
SSH keys are used to authenticate secure connections. Following this guide, you will be able to create and start using an SSH key. Git is capable of using SSH keys instead of traditional password authentication when pushing or pulling to remote repositories. Modern hosted git solutions like Bitbucket support SSH key authentication.
Источник
Использование проверки подлинности с ключом SSH
Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2015
Подключение в репозиториев Git через SSH в macOS, Linux или Windows для безопасного подключения с использованием проверки подлинности HTTPS. на Windows рекомендуется использовать основные или персональные маркеры доступа диспетчера учетных данных Git .
URL-адреса SSH изменились, но старые URL-адреса SSH продолжат работать. Если вы уже настроили SSH, необходимо обновить удаленные URL-адреса в новом формате:
- Проверьте, какие удаленные службы используют SSH, выполнив git remote -v в клиенте Git.
- Откройте репозиторий в Интернете и нажмите кнопку клонировать в правом верхнем углу.
- Выберите SSH и скопируйте новый URL-адрес SSH.
- В клиенте Git выполните: git remote set-url . кроме того, в Visual Studio перейдите в репозиторий Параметрыи измените удаленные.
начиная с Visual Studio 2017 можно использовать SSH для подключения к Azure DevOps репозиториев Git.
Как работает проверка подлинности SSH-ключа
Проверка подлинности с помощью открытого ключа SSH работает с асимметричной парой созданных ключей шифрования. открытый ключ предоставляется Azure DevOps и используется для проверки первоначального ssh-подключения. Закрытый ключ обеспечивает безопасность и безопасность в системе.
Настройка проверки подлинности ключей SSH
Следующие шаги охватывают настройку проверки подлинности ключей SSH на следующих платформах:
- Linux
- macOS, работающий по меньшей мере Leopard (10,5)
- Windows системы с Git для Windows
Настройте SSH с помощью командной строки. bash является общей оболочкой в Linux и macOS, а git для Windows установки добавляет ярлык для git Bash в меню. Другие среды оболочки будут работать, но не будут рассмотрены в этой статье.
Шаг 1. Создание ключей SSH
Если вы уже создали ключи SSH в системе, пропустите этот шаг и перейдите к разделу Настройка ключей SSH.
Команды здесь позволяют создавать новые ключи SSH по умолчанию, перезаписывая существующие ключи по умолчанию. Прежде чем продолжить, проверьте
/.ssh папку (например,/Хоме/Жамал/.СШ или к:\усерс\жамал \ . SSH) и найдите следующие файлы:
Если эти файлы существуют, вы уже создали ключи SSH. Вы можете перезаписать ключи с помощью следующих команд или пропустить этот шаг и перейти к разделу Настройка ключей SSH для повторного использования этих ключей.
Создайте ключи SSH с помощью ssh-keygen команды из bash командной строки. Эта команда создаст 3072-разрядный ключ RSA для использования с SSH. Вы можете предоставить парольную фразу для закрытого ключа при появлении запроса о том — , что парольная фраза обеспечивает другой уровень безопасности для закрытого ключа. Если вы выдаете парольную фразу, обязательно Настройте агент SSH для кэширования парольной фразы, чтобы не вводить его каждый раз при подключении.
Эта команда создает два ключа, необходимых для проверки подлинности SSH: ваш закрытый ключ ( id_rsa ) и открытый ключ ( id_rsa. pub ). Важно никогда не предоставлять общий доступ к содержимому закрытого ключа. Если закрытый ключ скомпрометирован, злоумышленники могут использовать его, чтобы заставить серверы подумать о том, что подключение поступает от вас.
шаг 2. добавление открытого ключа в Azure DevOps Services/тфс
Свяжите открытый ключ, созданный на предыдущем шаге, с ИДЕНТИФИКАТОРом пользователя.
Откройте параметры безопасности, перейдя на веб-портал и выбрав аватар в правом верхнем углу интерфейса пользователя. В появившемся меню выберите открытые ключи SSH .
Выберите + новый ключ.
Скопируйте содержимое открытого ключа (например, id_rsa. pub), созданного в поле данных открытого ключа .
старайтесь не добавлять пробелы или новые строки в поле данных ключа , так как это может привести к тому, что Azure DevOps Services использовать недопустимый открытый ключ. При вставлении в ключ новая строка часто добавляется в конец. Не забудьте удалить эту новую строку, если она возникает.
Присвойте ключу полезное описание (это описание будет отображаться на странице открытых ключей SSH для вашего профиля), чтобы вы могли запомнить его позже. Нажмите кнопку сохранить , чтобы сохранить открытый ключ. После сохранения ключ изменить нельзя. Вы можете удалить ключ или создать новую запись для другого ключа. Ограничений на количество ключей, которые можно добавить в профиль пользователя, не существует. также обратите внимание, что ключи SSH, хранящиеся в Azure DevOps, истекает через пять лет. если срок действия ключа истек, вы можете отправить новый раздел или один и тот же ключ, чтобы продолжить доступ к Azure DevOps через SSH.
Проверьте подключение, выполнив следующую команду: ssh -T git@ssh.dev.azure.com . Если все работает правильно, вы получите ответ, который говорит: remote: Shell access is not supported. Если нет, см. раздел с вопросами и устранением неполадок.
Шаг 2. Добавление открытого ключа в Azure DevOps
Свяжите открытый ключ, созданный на предыдущем шаге, с ИДЕНТИФИКАТОРом пользователя.
Откройте параметры безопасности, перейдя на веб-портал и выбрав аватар в правом верхнем углу интерфейса пользователя. В появившемся меню выберите Безопасность .
Выберите + новый ключ.
Скопируйте содержимое открытого ключа (например, id_rsa. pub), созданного в поле данных открытого ключа .
старайтесь не добавлять пробелы или новые строки в поле данных ключа , так как это может привести к тому, что Azure DevOps Services использовать недопустимый открытый ключ. При вставлении в ключ новая строка часто добавляется в конец. Не забудьте удалить эту новую строку, если она возникает.
Присвойте ключу полезное описание (это описание будет отображаться на странице открытых ключей SSH для вашего профиля), чтобы вы могли запомнить его позже. Нажмите кнопку сохранить , чтобы сохранить открытый ключ. После сохранения ключ изменить нельзя. Вы можете удалить ключ или создать новую запись для другого ключа. Ограничений на количество ключей, которые можно добавить в профиль пользователя, не существует.
Проверьте подключение, выполнив следующую команду: ssh -T git@ssh.dev.azure.com . Если все работает правильно, вы получите ответ, который говорит: remote: Shell access is not supported. Если нет, см. раздел с вопросами и устранением неполадок.
Шаг 3. Клонирование репозитория Git с помощью SSH
Сведения о подключении по протоколу SSH из существующего клонированного репозитория см. в разделе обновление удаленных служб до SSH.
Скопируйте URL-адрес клонирования SSH с веб-портала. В этом примере URL-адрес клона SSL предназначен для репозитория в Организации с именем Fabrikam-Fiber, как указано первой частью URL-адреса после dev.azure.com .
Project url-адреса были изменены в выпуске Azure DevOps Services и теперь имеют формат dev.azure.com/
Выполните git clone в командной строке.
SSH может отобразить отпечаток SSH сервера и попросить вас его проверить. Следует убедиться, что отображаемый отпечаток соответствует одному из отпечатков пальцев на странице открытых ключей SSH .
SSH отображает этот отпечаток при подключении к неизвестному узлу и защищает вас от атак типа «злоумышленник в середине». Приняв отпечаток узла, SSH не выводит запрос повторно, пока отпечаток не изменится.
Когда появится запрос на продолжение подключения, введите yes . Git будет клонировать репозиторий и настроить удаленный доступ origin для подключения по протоколу SSH для будущих команд git.
чтобы избежать проблем, Windows пользователи должны выполнить команду , чтобы Git повторно использовал парольную фразу SSH.
Вопросы и устранение неполадок
Вопрос. После выполнения git clone я получаю следующую ошибку. Что следует делать?
Ответ . Вручную запишите ключ SSH, выполнив команду: ssh-keyscan -t rsa domain.com >>
Вопрос. как с помощью Git запоминать парольную фразу для моего ключа на Windows?
Ответ . выполните следующую команду, входящую в Git, чтобы Windows запустить ssh-agent процесс в PowerShell или в Windows командной строке. ssh-agent кэширует вашу парольную фразу, чтобы не указывать ее при каждом подключении к репозиторию.
Если вы используете оболочку Bash (включая Git bash), запустите ssh-agent с:
Вопрос. я использую в качестве моего клиента SSH ввод и создал ключи с помощью PuTTYgen. Можно ли использовать эти ключи с Azure DevOps Services?
Ответ. Да. Загрузите закрытый ключ с помощью PuTTYgen, перейдите в меню преобразования и выберите Экспорт ключа OpenSSH. Сохраните файл закрытого ключа и выполните действия по настройке ключей, не относящихся к по умолчанию. Скопируйте открытый ключ непосредственно из окна PuTTYgen и вставьте в поле Data ( Ключевые данные ) в параметры безопасности.
Вопрос. Как убедиться, что открытый ключ, который я отправил, имеет тот же ключ, что и локальный?
Ответ . Отпечаток открытого ключа, который отображается в профиле, можно проверить с помощью следующей ssh-keygen команды, выполняемой для открытого ключа в bash командной строке. Если значения по умолчанию не используются, необходимо будет изменить путь и имя файла открытого ключа.
Затем можно сравнить сигнатуру MD5 с той, которая есть в вашем профиле. Эта проверка полезна при возникновении проблем с подключением или при неправильном вводе открытого ключа в поле данных ключа при добавлении ключа в Azure DevOps Services.
Вопрос. как начать использовать SSH в репозитории, где сейчас используется протокол HTTPS?
Ответ . Вам потребуется обновить origin Удаленный в Git, чтобы изменить URL-адрес HTTPS на SSH. Получив URL-адрес клона SSH, выполните следующую команду:
Теперь можно выполнить любую команду git, которая подключается к origin .
вопрос. я использую Git LFS с Azure DevOps Services и получаю сообщения об ошибках при получении файлов, отслеживаниющих с помощью Git LFS.
ответ . Azure DevOps Services сейчас не поддерживает LFS через SSH. Используйте HTTPS для подключения к репозиториев с отслеживанием файлов LFS Git.
Вопрос. как использовать расположение ключа не по умолчанию, т. е. not/.СШ/id_rsa и
Ответ . Чтобы использовать ключи, созданные ssh-keygen в, в другом месте, отличном от используемого по умолчанию, выполните следующие две задачи:
- Ключи должны находиться в папке, которую можно читать или изменять. Если у папки есть более широкие разрешения, SSH не будет использовать эти ключи.
- Необходимо предоставить SSH сведения о расположении ключей. Вы делает SSH-доступ к ключам с помощью ssh-add команды, предоставляя полный путь к закрытому ключу.
в Windows перед запуском необходимо ssh-add выполнить следующую команду из команды, включенной в Git, для Windows:
Эта команда выполняется как в PowerShell, так и в командной строке. При использовании git Bash необходимо использовать следующие команды:
его можно найти ssh-add как часть Git для Windowsного распространения, а также запускать в любой среде оболочки на Windows.
В macOS и Linux также необходимо ssh-agent запустить перед запуском ssh-add , но среда команд на этих платформах обычно начинает с самого начала ssh-agent .
Вопрос. у меня несколько ключей SSH. Разделы справки использовать разные ключи SSH для разных серверов SSH или репозиториев?
Ответ . Как правило, если вы настроили несколько ключей для клиента SSH и подключились к серверу SSH, клиент может попытаться использовать ключи по одному, пока сервер не примет его.
однако это не работает с Azure DevOps по техническим причинам, связанным с протоколом ssh, и о том, как структурированы url-адреса SSH Git. Azure DevOps будет отменять первый ключ, предоставляемый клиентом во время проверки подлинности. Если этот ключ недопустим для запрошенного репозитория, запрос завершится со следующей ошибкой:
для Azure DevOps необходимо настроить SSH для явного использования определенного файла ключа. Один из способов сделать это для изменения
/.ssh/config файла (например, /home/jamal/.ssh или C:\Users\jamal\.ssh ) следующим образом:
Вопрос. Разделы справки исправить ошибки с упоминанием «не найден соответствующий метод обмена ключами»?
Ответ . Git для Windows 2.25.1 поставляется с новой версией OpenSSH, которая по умолчанию удалила некоторые протоколы обмена ключами. в частности, определено diffie-hellman-group14-sha1 как проблематичное для некоторых Azure DevOps Server и клиентов TFS. Эту проблему можно обойти, добавив следующую команду в конфигурацию SSH (
замените именем узла Azure DevOps или сервера TFS, например tfs.mycompany.com .
Вопрос. какие уведомления могут получать сведения о ключах SSH?
Ответ . при регистрации нового ключа ssh с Azure DevOps Services вы получите уведомление по электронной почте о том, что в учетную запись добавлен новый ключ ssh.
Вопрос. что делать, если я полагаю, что кто-то, помимо меня, добавляет ключи SSH в мою учетную запись?
Ответ . Если вы получили уведомление о регистрации SSH-ключа и вы не перегрузили его в службу вручную, возможно, ваши учетные данные были скомпрометированы.
Следующий шаг — выяснить, не был ли ваш пароль скомпрометирован. Изменение пароля всегда является хорошим первым шагом для защиты от этого вектора атак. если вы являетесь Azure Active Directory пользователем, обратитесь к администратору, чтобы проверить, использовалась ли ваша учетная запись из неизвестного источника или расположения.
Вопрос. что делать, если у меня по-прежнему запрашиваются пароль и GIT_SSH_COMMAND=»ssh -v» git fetch отображается no mutual signature algorithm ?
Ответ . некоторые дистрибутивы linux, например Fedora Linux, имеют политики шифрования, требующие более строгих алгоритмов подписи SSH, чем поддерживает Azure DevOps (по состоянию на январь 2021). Есть запрос на открытие функции для добавления этой поддержки.
Можно обойти эту ошибку, добавив следующий код в конфигурацию SSH (
Источник