最近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を設定できる方法はありますか?
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
GitHub
git config --global url.ssh://[email protected]/.insteadOf https://github.com/
BitBucket
git config --global url.ssh://[email protected]/.insteadOf https://bitbucket.org/
これはGitHub/BitBucketに接続するときにHTTPSではなくSSHを常に使用するようにgitに指示するので、デフォルトではパスワードの入力を求められるのではなく証明書によって認証されます。
しかし、これがあなたの.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/
異なるホストに多くの鍵が必要な場合は、次のようにします。
スクリプトを作成する
#!/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]
誤ってリポジトリをsshではなくhttpsにクローンした可能性があります。私はgithubでこの間違いを何度もしました。クローン作成時には、httpsリンクではなく、必ずsshリンクをコピーするようにしてください。