Jak zmienić git na SSH, a nie https dla nowych repozytoriów

W dzisiejszych czasach kiedy tworzę nowe repozytorium na Githubie na stronie setup dostaję:

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

I za każdym razem, gdy muszę wcisnąć commit, muszę podać moją nazwę Użytkownika i hasło na Githubie.

Mogę ręcznie zmienić to na

[email protected]:nikhilbhardwaj/abc.git

W .git/config. Uważam to za dość irytujące - czy jest jakiś sposób, aby skonfigurować git do używania SSH domyślnie?

 137
Author: corazza, 2012-06-26

5 answers

Ustawianie gałęzi origin repozytorium na SSH

Strona konfiguracji repozytorium GitHub jest tylko sugerowaną listą poleceń (i GitHub sugeruje teraz używanie protokołu HTTPS). Jeśli nie masz dostępu administracyjnego do strony Githuba, nie znam żadnego sposobu na zmianę sugerowanych poleceń.

Jeśli wolisz używać protokołu SSH, po prostu dodaj zdalną gałąź w ten sposób (tzn. użyj tej komendy zamiast sugerowanej komendy Githuba). Aby zmodyfikować istniejącą gałąź, zobacz następna sekcja.

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

Modyfikuj istniejące repozytorium

Jak już wiesz, aby przełączyć istniejące repozytorium na SSH zamiast HTTPS, możesz zmienić zdalny adres url w pliku .git/config.

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

Skrótem jest użycie polecenia set-url:

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

Więcej informacji o SSH-HTTPS switch

 230
Author: David Cain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:43
  • GitHub

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

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

To mówi gitowi, aby zawsze używał SSH zamiast HTTPS podczas łączenia się z GitHub / BitBucket, więc domyślnie uwierzytelniasz się za pomocą certyfikatu, zamiast monitu o hasło.

 110
Author: Trevor Austin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-14 21:57:28

Trevor nie jest w stanie tego zrobić.

Ale oto co możesz bezpośrednio dodać w swoim .gitconfig:

# Enforce SSH
[url "ssh://[email protected]/"]
  insteadOf = https://github.com/
[url "ssh://[email protected]/"]
  insteadOf = https://gitlab.com/
[url "ssh://[email protected]/"]
  insteadOf = https://bitbucket.org/
 37
Author: MoOx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:25

Jeśli chcesz mieć wiele kluczy dla różnych hostów, zrób to:

Tworzenie skryptu

#!/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

I uruchom go jak

sh script.sh [email protected] github.com

Zmień zdalny adres url

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

Dodaj zawartość~/. SSH / github.com_rsa. Pub do kluczy ssh na github.com

Sprawdź połączenie

ssh -T [email protected]
 2
Author: rofrol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-26 10:15:42

Upewnij się, że podczas klonowania kopiujesz łącze ssh zamiast łącza https. To jest sposób PEBCAK, aby zapewnić to domyślne;)

 1
Author: Mike Lyons,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-26 21:42:55