Как мне получить git по умолчанию для ssh, а не https для новых репозиториев

В эти дни, когда я создаю новый репозиторий на GitHub на странице настроек, я получаю:

git remote add origin https://github.com/nikhilbhardwaj/abc.git
git push -u origin master

И всякий раз, когда мне нужно нажать фиксацию, мне нужно ввести имя пользователя и пароль GitHub.

Я могу вручную изменить это на

[email protected]:nikhilbhardwaj/abc.git

в .git/config. Я нахожу это довольно раздражающим - есть способ, каким образом я могу настроить git для использования SSH по умолчанию?

Ответ 1

Настроить ветвь источника репозитория для SSH

Страница настройки репозитория GitHub - это всего лишь предлагаемый список команд (и GitHub теперь предлагает использовать протокол HTTPS). Если у вас нет административного доступа к сайту GitHub, я не знаю, как изменить предлагаемые вами команды.

Если вы предпочитаете использовать протокол SSH, просто добавьте удаленную ветку, например, (например, используйте эту команду вместо предлагаемой команды GitHub). Чтобы изменить существующую ветку, см. Следующий раздел.

$ git remote add origin [email protected]:nikhilbhardwaj/abc.git

Изменить существующий репозиторий

Как вы уже знаете, чтобы переключить ранее существовавший репозиторий на использование SSH вместо HTTPS, вы можете изменить удаленный URL-адрес в файле .git/config.

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    -url = https://github.com/nikhilbhardwaj/abc.git
    +url = [email protected]:nikhilbhardwaj/abc.git

Ярлык состоит в использовании команды set-url:

$ git remote set-url origin [email protected]:nikhilbhardwaj/abc.git

Дополнительная информация о переключателе SSH-HTTPS

Ответ 2

  • GitHub

    git config --global url.ssh://[email protected]/.insteadOf https://github.com/
    
  • BitBucket

    git config --global url.ssh://[email protected]/.insteadOf https://bitbucket.org/
    

Это говорит git всегда использовать SSH вместо HTTPS при подключении к GitHub/BitBucket, поэтому вы будете аутентифицироваться по сертификату по умолчанию, вместо того, чтобы запрашивать пароль.

Ответ 4

Вам нужно клонировать в ssh, а не в https.

Для этого вам нужно установить ваши ключи SSH. Я подготовил этот маленький скрипт, который автоматизирует это:

#!/usr/bin/env bash
email="$1"
hostname="$2"
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 *.$hostname
        User git
    IdentitiesOnly yes
        IdentityFile $keypath
EOF
fi

и запусти его как

bash script.sh [email protected] github.com

Измените удаленный URL

git remote set-url origin [email protected]:user/foo.git

Добавьте содержимое ~/.ssh/github.com_rsa.pub к своим ключам ssh на github.com

Проверьте соединение

ssh -T [email protected]

Ответ 5

Возможно, вы случайно клонировали хранилище в https вместо ssh. Я делал эту ошибку много раз на GitHub. Убедитесь, что вы копируете ссылку ssh в первую очередь при клонировании, а не ссылку https.

Ответ 6

Файл SSH

~/.ssh/config file
Host *
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null
    LogLevel QUIET
    ConnectTimeout=10
Host github.com
        User git
        AddKeystoAgent yes
        UseKeychain yes
        Identityfile ~/github_rsa

Изменить имя /.git/config

[remote "origin"]
        url = [email protected]:username/repo.git