it-swarm.com.de

Wie bekomme ich git standardmäßig auf ssh und nicht auf https für neue Repositories

In diesen Tagen, wenn ich ein neues Repository auf GitHub auf der Setup-Seite erstelle, erhalte ich:

git remote add Origin https://github.com/nikhilbhardwaj/abc.git
git Push -u Origin master

Und wann immer ich ein Commit pushen muss, muss ich meinen GitHub-Benutzernamen und mein Passwort eingeben.

Ich kann das manuell ändern

[email protected]:nikhilbhardwaj/abc.git

in dem .git/config. Ich finde das ziemlich irritierend - gibt es eine Möglichkeit, git so zu konfigurieren, dass es standardmäßig SSH verwendet?

170
nikhil

Richten Sie den Origin-Zweig eines Repositorys als SSH ein

Die Einrichtungsseite für das GitHub-Repository ist nur eine vorgeschlagene Liste von Befehlen (und GitHub schlägt jetzt die Verwendung des HTTPS-Protokolls vor). Sofern Sie keinen Administratorzugriff auf die Website von GitHub haben, kenne ich keine Möglichkeit, die vorgeschlagenen Befehle zu ändern.

Wenn Sie lieber das SSH-Protokoll verwenden möchten, fügen Sie einfach einen entfernten Zweig hinzu (d. H. Verwenden Sie diesen Befehl anstelle des von GitHub vorgeschlagenen Befehls). Informationen zum Ändern eines vorhandenen Zweigs finden Sie im nächsten Abschnitt.

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

Ändern Sie ein bereits vorhandenes Repository

Wie Sie bereits wissen, können Sie die Remote-URL in Ihrer .git/config - Datei ändern, um ein bereits vorhandenes Repository auf die Verwendung von SSH anstelle von HTTPS umzustellen.

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

Eine Abkürzung ist die Verwendung des Befehls set-url:

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

Weitere Informationen zum SSH-HTTPS-Switch

264
David Cain

Dies weist git an, beim Herstellen einer Verbindung zu GitHub/BitBucket immer SSH anstelle von HTTPS zu verwenden, sodass Sie sich standardmäßig als Zertifikat authentifizieren, anstatt zur Eingabe eines Kennworts aufgefordert zu werden.

141
Trevor Austin

Das Antwort von Trevor ist korrekt .

Aber hier ist, was Sie direkt in Ihrem .gitconfig Hinzufügen können:

# 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/
52
MoOx

Wenn Sie viele Schlüssel für verschiedene Hosts benötigen, gehen Sie wie folgt vor:

Erstellen Sie ein Skript

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

und lass es laufen wie

bash script.sh [email protected] github.com

Ändern Sie Ihre Remote-URL

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

Fügen Sie Inhalt von ~/.ssh/github.com_rsa.pub Zu Ihren SSH-Schlüsseln auf github.com hinzu

Verbindung prüfen

ssh -T [email protected]
4
rofrol

Möglicherweise haben Sie das Repository versehentlich in https anstelle von ssh geklont. Ich habe diesen Fehler mehrmals auf Github gemacht. Stellen Sie sicher, dass Sie beim Klonen den ssh-Link anstelle des https-Links kopieren.

2
Mike Lyons