Как получить 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


  • 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 обеспечить это значение по умолчанию;)