Как получить git по умолчанию для ssh, а не https для новых репозиториев
в эти дни, когда я создаю новый репозиторий на GitHub на странице настройки я получаю:
git remote add origin https://github.com/nikhilbhardwaj/abc.git
git push -u origin master
и всякий раз, когда мне нужно нажать фиксацию, мне нужно ввести имя пользователя и пароль GitHub.
Я могу вручную изменить это, чтобы
git@github.com:nikhilbhardwaj/abc.git
на .git/config
. Я нахожу это весьма раздражающим ... --10-->есть ли способ настроить git для использования SSH по умолчанию?
5 ответов
настройте исходную ветвь репозитория как SSH
страница настройки репозитория GitHub - это только предлагаемый список команд (и GitHub теперь предлагает использовать протокол HTTPS). Если у вас нет административного доступа к сайту GitHub, я не знаю, как изменить предлагаемые ими команды.
если вы предпочитаете использовать протокол SSH, просто добавьте удаленную ветку так (т. е. используйте эту команду на месте предложенной команды GitHub). Для изменения существующая ветвь, см. Следующий раздел.
$ git remote add origin git@github.com:nikhilbhardwaj/abc.git
изменить существующий репозиторий
как вы уже знаете, чтобы переключить существующий репозиторий на использование SSH вместо HTTPS, вы можете изменить удаленный url-адрес в своем .
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
-url = https://github.com/nikhilbhardwaj/abc.git
+url = git@github.com:nikhilbhardwaj/abc.git
ярлык должен использовать :
$ git remote set-url origin git@github.com:nikhilbhardwaj/abc.git
дополнительная информация о коммутаторе SSH-HTTPS
- " почему Git всегда просит моего пароль?" - страница справки GitHub.
- переключение GitHub на Smart HTTP - соответствующий вопрос StackOverflow
- кэширование учетных данных для удобного использования Git - GitHub блог сообщение о HTTPS, и как избежать повторного ввода пароля
-
GitHub
git config --global url.ssh://git@github.com/.insteadOf https://github.com/
-
BitBucket
git config --global url.ssh://git@bitbucket.org/.insteadOf https://bitbucket.org/
это говорит git всегда использовать SSH вместо HTTPS при подключении к GitHub / BitBucket, поэтому вы будете аутентифицироваться по сертификату по умолчанию, а не запрашивать пароль.
но вот то, что вы можете напрямую добавить в свой .gitconfig
:
# Enforce SSH
[url "ssh://git@github.com/"]
insteadOf = https://github.com/
[url "ssh://git@gitlab.com/"]
insteadOf = https://gitlab.com/
[url "ssh://git@bitbucket.org/"]
insteadOf = https://bitbucket.org/
Если вам нужно много ключей для разных хостов, сделайте следующее:
создать скрипт
#!/usr/bin/env bash
email=""
hostname=""
hostalias="$hostname"
keypath="$HOME/.ssh/${hostname}_rsa"
ssh-keygen -t rsa -C $email -f $keypath
if [ $? -eq 0 ]; then
cat >> ~/.ssh/config <<EOF
Host $hostalias
Hostname $hostname
User git
IdentitiesOnly yes
IdentityFile $keypath
EOF
fi
и запустите его как
sh script.sh myemail@example.com github.com
изменить удаленный url
git remote set-url origin git@github.com:user/foo.git
добавить содержимое~/.ssh / github.com_rsa.паб к вашим SSH ключам на github.com
проверьте подключение
ssh -T git@github.com
убедитесь, что вы копируете ssh-ссылку в первую очередь при клонировании, а не https-ссылку. Это способ PEBCAK обеспечить это значение по умолчанию;)