Настройте несколько SSH-ключей в Git на одном компьютере под Windows.

фон

Когда на компьютере имеется несколько учетных записей git, например:
a. gitee, используемый для внутренней разработки компании;
б. GitHub, используемый для некоторых действий по разработке;
C. Gitlab, адрес удаленного склада пересылается по IP-порту на сервере;
Подумайте Как справиться с одновременным использованием git, не мешая друг другу?

1. Сгенерировать ключ

ssh-keygen -t rsa -C "xxx邮箱[email protected]"

Вставьте сюда описание изображения

Если вы используете тот же почтовый ящик, скопируйте файлы id_rsa (соответствующий файл для создания имени закрытого ключа) и id_rsa.pub (создание файла, соответствующего имени открытого ключа) в папку ~.ssh, а затем переименуйте файлы;
Если вы используете другой адрес электронной почты, повторите приведенную выше команду и так далее.

ssh-keygen -t rsa -C "xxx邮箱[email protected]"

Уведомление! ! !
生成密钥的邮箱与仓库管理管理代码设置的邮箱要保持一致!

2. Git идентифицирует новый ключ (важно!!!)

ssh-agent bash
ssh-add ~/.ssh/id_rsa_gitee
ssh-add ~/.ssh/id_rsa_gitlab
ssh-add ~/.ssh/id_rsa_github

3. Создайте или измените файл конфигурации в каталоге ~/.ssh/ (ключ!!!)

Вставьте сюда описание изображения

Host *
    HostKeyAlgorithms +ssh-dss
	PubkeyAcceptedKeyTypes +ssh-rsa
        
# 配置gitlab(PS:http://192.XXX.XXS.205:90/users/sign_in)
Host 192.xxx.XX.205 // 远程仓库的地址,域名或ip(不带端口号),可以自定义
    HostName 192.xxx.XX.205 // 远程仓库的真正的地址,域名或ip(不带端口号),不可更改
    // Port 端口号,如果有做转发需要在这里填写端口号,没有就不必要填
    Port 22 // 原本ip地址的端口号写的是90,奈何一直报错,尝试22成功了,22是ssh的端口号?!
    IdentityFile ~/.ssh/id_rsa_gitlab // 识别key的文件 PreferredAuthentications publickey // 可以不用配置
    User cai002 // 用户名
        IdentitiesOnly yes // 可以不用配置

# 配置github.com
Host github.com            
    HostName github.com
    IdentityFile ~/.ssh/id_rsa_github
    PreferredAuthentications publickey
    User encod
	IdentitiesOnly yes
	
# 配置gitee.com
Host gitee.com            
    HostName gitee.com
    IdentityFile ~/.ssh/id_rsa_gitee
    PreferredAuthentications publickey
    User acai
	IdentitiesOnly yes

4. Разверните SSH-ключ.

Скопируйте содержимое файлов ~/.ssh/id_rsa_github.pub и ~/.ssh/id_rsa_gitlab.pub, затем откройте страницу настройки ssh-ключа на соответствующем хостинге и вставьте скопированное содержимое в порядке.
Вставьте сюда описание изображения
Таким образом мы связываем ключ на сервере с хостинговой платформой.

5. Ссылка для удаленного тестирования по SSH.

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

ssh -T git@gitee.com
ssh -T git@192.168.1.205
ssh -T git@github.com

# xxx! You’ve successfully authenticated, but GitHub does not provide bash access.
# 出现上述提示,连接成功

изображение.png

6. Клонирование/Извлечение проекта

git clone git@one.gitee.com: one的用户名/xxx.git

Вставьте сюда описание изображения

Дополнительно 1: команды, связанные с git

имя пользователя и адрес электронной почты глобальных настроек git

// 自定义用户名
git config --global user.name "用户名" 
// 自定义邮箱
git config --global user.email "邮箱"

Просмотр установленной глобальной информации git.

git config -l

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

git config --global --unset user.name 
git config --global --unset user.email

Установите локальное имя пользователя и адрес электронной почты для git в новой папке.

git config user.name "用户名"
git config user.email "邮箱"

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

Дополнительно 2: Собирайтесь при возникновении проблем (избегайте ловушек!!!)

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

решение:

  1. Есть ли файл конфигурации в каталоге ~.ssh?Если нет, создайте его;
  2. Добавьте в конфиг:
Host * 
    HostKeyAlgorithms +ssh-dss

2. Клонируем проект, git сообщает об ошибке:OpenSSL SSL_read: Connection was reset, errno 10054
Вставьте сюда описание изображения

решение:

  1. Сеть нестабильна, время соединения истекло;
    1) Сначала проверьте, правильный ли IP-адрес, соответствующий доменному имени, к которому обращается github, в файле хоста на диске C; если оно неверно, измените его, см. Невозможно подключиться к github, измените сопоставление хостов.
    2) Если IP правильный, клонируйте несколько раз;
  2. Измените настройки и отключите проверку SSL. Введите Git Bash здесь и введите командуgit config --global http.sslVerify "false"

Вставьте сюда описание изображения
На этом этапе при повторном выполнении операции клонирования git сообщает об ошибке:Logon failed, use ctrl+c to cancel basic credential prompt
Вставьте сюда описание изображения

решение:

  1. Введите следующую команду в командной строке git bash:
setx GIT_TRACE ""
setx GCM_TRACE ""
  1. Удалитьtenant.cache
    Удалить tenant.cacheфайл в каталоге AppData\Local\GitCredentialManager.

В это время снова выполните операцию клонирования git, и git по-прежнему сообщает об ошибке:The authenticity of host 'github.com (20.205.243.166)' can't be established.\

решение:

  1. Сначала проверьте, есть ли три ключевых файла в каталоге .ssh вашего пользовательского каталога.

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

  1. Проверьте это с помощью На рисунке хорошо видно, что открытый ключ отсутствует. Если файл открытого ключа не был сгенерирован, введите команду для генерации ключа; Если файл ключа был сгенерирован, добавьте соответствующий открытый ключ в на Гитхабе. В этот момент операция клонирования снова успешна. ssh -T [email protected]
    Вставьте сюда описание изображения



Обратите внимание на разницу между клонированием публичного склада и частного склада! ! !
Частные склады нельзя клонировать с помощью http/https, можно использовать только ssh, иначе будет выдано сообщение об ошибке.

3. Ошибка клонирования git:ssh_exchange_identification: Connection closed by remote host
Вставьте сюда описание изображения

причина:

  1. Ключевые вопросы;
  2. Проблема с конфигурацией в конфигурации: Ошибка конфигурации порта! ! (ключевой вопрос)
# 配置gitlab(PS:http://192.XXX.XXS.205:90/users/sign_in)
Host 192.xxx.XX.205
    HostName 192.xxx.XX.205
    Port 22 // 原本ip地址的端口号写的是90,奈何一直报错,尝试22成功了,22是ssh的端口号?!
    IdentityFile ~/.ssh/id_rsa_gitlab // 识别key的文件 PreferredAuthentications publickey // 可以不用配置
    User cai // 用户名

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

4. Возникает следующая ошибка:

Unable to negotiate with  192.xxx.xx.205 port 22: no matching host key type found. 
Their offer: ssh-rsa,ssh-dssfatal: Could not read from remote repository. 
Please make sure you have the correct access rightsand the repository exists.

Решение:
Создайте новый файл конфигурации и добавьте его

Host *
    HostKeyAlgorithms +ssh-dss
    PubkeyAcceptedKeyTypes +ssh-rsa

Если добавленная конфигурация проверяет ее правильность, выполните командуssh -T [email protected],
Если она все еще недействительна, проверьте, был ли файл ключа добавлен и снова выполните команду ssh-add \~/.ssh/id\_rsa.

Supongo que te gusta

Origin blog.csdn.net/acai_encode/article/details/130776105
Recomendado
Clasificación