web-dev-qa-db-ja.com

新しいリポジトリに対して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にあります。私はこれを非常にいらいらさせます - デフォルトでSSHを使うようにgitを設定できる方法はありますか?

164
nikhil

リポジトリのOriginブランチをSSHに設定します

GitHubレポジトリ設定ページは推奨されるコマンドのリストです(そしてGitHubは現在HTTPSプロトコルの使用を提案しています)。あなたがGitHubのサイトに管理アクセス権を持っていない限り、私は彼らが提案するコマンドを変更する方法を知りません。

SSHプロトコルを使用したい場合は、そのようにリモートブランチを追加してください(つまり、GitHubの推奨コマンドの代わりにこのコマンドを使用します。既存のブランチを修正するには、次のセクションを見てください。

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

既存のリポジトリを変更する

すでにご存知のように、既存のリポジトリをHTTPSではなくSSHを使用するように切り替えるには、.git/configファイル内のリモートURLを変更します。

[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スイッチに関する詳細情報

260
David Cain

これはGitHub/BitBucketに接続するときにHTTPSではなくSSHを常に使用するようにgitに指示するので、デフォルトではパスワードの入力を求められるのではなく証明書によって認証されます。

137
Trevor Austin

Trevorによって提供された応答は正しい

しかし、これがあなたの.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/
49
MoOx

異なるホストに多くの鍵が必要な場合は、次のようにします。

スクリプトを作成する

#!/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 [email protected] github.com

リモートURLを変更する

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

Github.comのsshキーに〜/ .ssh/github.com_rsa.pubの内容を追加してください。

接続を確認する

ssh -T [email protected]
3
rofrol

誤ってリポジトリをsshではなくhttpsにクローンした可能性があります。私はgithubでこの間違いを何度もしました。クローン作成時には、httpsリンクではなく、必ずsshリンクをコピーするようにしてください。

2
Mike Lyons