Как мне получить 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
, Я нахожу это довольно раздражающим - есть ли способ настроить git на использование SSH по умолчанию?
9 ответов
Настройте исходную ветку хранилища как SSH
Страница настройки репозитория GitHub - это просто предлагаемый список команд (и теперь GitHub предлагает использовать протокол HTTPS). Если у вас нет административного доступа к сайту GitHub, я не знаю ни одного способа изменить предложенные им команды.
Если вы предпочитаете использовать протокол SSH, просто добавьте удаленную ветку, например, такую (например, используйте эту команду вместо предложенной команды GitHub). Чтобы изменить существующую ветку, см. Следующий раздел.
$ git remote add origin git@github.com:nikhilbhardwaj/abc.git
Изменить уже существующее хранилище
Как вы уже знаете, чтобы переключить существующий репозиторий на использование SSH вместо HTTPS, вы можете изменить удаленный URL в вашем .git/config
файл.
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
-url = https://github.com/nikhilbhardwaj/abc.git
+url = git@github.com:nikhilbhardwaj/abc.git
Ярлык должен использовать set-url
команда:
$ git remote set-url origin git@github.com:nikhilbhardwaj/abc.git
Подробнее о коммутаторе SSH-HTTPS
- "Почему Git всегда спрашивает мой пароль?" - Страница справки GitHub.
- Переключение GitHub на Smart HTTP - актуальный вопрос Stackru
- Кэширование учетных данных для удобного использования 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="$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
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.pub в ваши ключи ssh на github.com
Проверьте подключение
ssh -T git@github.com
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
Отредактируйте reponame/.git/config
[remote "origin"]
url = git@github.com:username/repo.git
Возможно, вы случайно клонировали хранилище в https вместо ssh. Я делал эту ошибку много раз на GitHub. Убедитесь, что вы копируете ссылку ssh в первую очередь при клонировании, а не ссылку https.
К вашему сведению — я использую это из-за того, что github больше не разрешает ssh:
[url "git@github.com:"]
insteadOf = https://github.com/
[url "git@gist.github.com:"]
insteadOf = https://gist.github.com/
Если вы используете Gitlab
git remote -v
вы можете увидеть что-то вроде
https://gitlab.king.com/knight/squire.git
просто замените короля, рыцаря, оруженосца своим. рыцарь/оруженосец - это то, как в нашем проекте есть разные каталоги, и вы можете перейти к ним.
git remote set-url origin ssh://git@gitlab.king.com/knight/squire.git
git pull или что-то в этом роде и наслаждайтесь своим гением
В то время как другие ответы здесь прямо отвечают на главный вопрос (так, как я не знал, что это возможно! TIL что-то новое об! Об автоматическом превращении базирующихся пультов в
git+ssh
один, "нормальный" способ сделать это "правильно" с самого начала - не давать
https
URL.
Github.com (а также другие популярные службы хостинга git) почти всегда имеют маленькую кнопку, которая позволяет получить URL-адрес,
git
следует клонировать. Вам просто нужно нажать маленькую кнопку «SSH», чтобы выбрать правильный метод:
Как вариант для нового проекта
Как только вы выберете опцию «SSH», github.com запомнит (пока вы вошли в систему) и по умолчанию установит последний выбранный вариант.