фон
Когда на компьютере имеется несколько учетных записей 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.
# 出现上述提示,连接成功
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 для настройки закрытого ключа).Введите следующую команду и появится следующая ошибка:
решение:
- Есть ли файл конфигурации в каталоге ~.ssh?Если нет, создайте его;
- Добавьте в конфиг:
Host *
HostKeyAlgorithms +ssh-dss
2. Клонируем проект, git сообщает об ошибке:OpenSSL SSL_read: Connection was reset, errno 10054
решение:
- Сеть нестабильна, время соединения истекло;
1) Сначала проверьте, правильный ли IP-адрес, соответствующий доменному имени, к которому обращается github, в файле хоста на диске C; если оно неверно, измените его, см. Невозможно подключиться к github, измените сопоставление хостов.
2) Если IP правильный, клонируйте несколько раз; - Измените настройки и отключите проверку SSL. Введите Git Bash здесь и введите команду
git config --global http.sslVerify "false"
На этом этапе при повторном выполнении операции клонирования git сообщает об ошибке:Logon failed, use ctrl+c to cancel basic credential prompt
решение:
- Введите следующую команду в командной строке git bash:
setx GIT_TRACE ""
setx GCM_TRACE ""
- Удалить
tenant.cache
Удалитьtenant.cache
файл в каталоге AppData\Local\GitCredentialManager.
В это время снова выполните операцию клонирования git, и git по-прежнему сообщает об ошибке:The authenticity of host 'github.com (20.205.243.166)' can't be established.
\
решение:
- Сначала проверьте, есть ли три ключевых файла в каталоге .ssh вашего пользовательского каталога.
Если их только два, введите «да» и нажмите «Ввод», будет создан файл «известные_хосты».
- Проверьте это с помощью На рисунке хорошо видно, что открытый ключ отсутствует. Если файл открытого ключа не был сгенерирован, введите команду для генерации ключа; Если файл ключа был сгенерирован, добавьте соответствующий открытый ключ в на Гитхабе. В этот момент операция клонирования снова успешна.
ssh -T [email protected]
Обратите внимание на разницу между клонированием публичного склада и частного склада! ! !
Частные склады нельзя клонировать с помощью http/https, можно использовать только ssh, иначе будет выдано сообщение об ошибке.
3. Ошибка клонирования git:ssh_exchange_identification: Connection closed by remote host
причина:
- Ключевые вопросы;
- Проблема с конфигурацией в конфигурации: Ошибка конфигурации порта! ! (ключевой вопрос)
# 配置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
.