These days when I create a new repository on GitHub on the setup page I get:
git remote add origin https://github.com/nikhilbhardwaj/abc.git
git push -u origin master
And whenever I have to push a commit I need to enter my GitHub username and password.
I can manually change that to
[email protected]:nikhilbhardwaj/abc.git
in the .git/config
. I find this quite irritating - is there some way I can configure git to use SSH by default?
SSH File
~/.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
Edit reponame/.git/config
[remote "origin"]
url = [email protected]:username/repo.git
You may have accidentally cloned the repository in https instead of ssh. I've made this mistake numerous times on github. Make sure that you copy the ssh link in the first place when cloning, instead of the https link.
The response provided by Trevor is correct.
But here is what you can directly add in your .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/
You need to clone in ssh not in https.
For that you need to set your ssh keys. I have prepared this little script that automates this:
#!/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
and run it like
bash script.sh [email protected] github.com
Change your remote url
git remote set-url origin [email protected]:user/foo.git
Add content of ~/.ssh/github.com_rsa.pub
to your ssh keys on github.com
Check connection
ssh -T [email protected]
GitHub
git config --global url.ssh://[email protected]/.insteadOf https://github.com/
BitBucket
git config --global url.ssh://[email protected]/.insteadOf https://bitbucket.org/
That tells git to always use SSH instead of HTTPS when connecting to GitHub/BitBucket, so you'll authenticate by certificate by default, instead of being prompted for a password.
Source: Stackoverflow.com