How do I get git to default to ssh and not https for new repositories

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.

  • With GitHub how do I push all branches when adding an existing repo?
  • Getting fatal: object is corrupted when pushing to a remote repo
  • How do I see changes in the git index?
  • Is there a way to configure git repository to reject 'git push --force'?
  • git .ignore not working in a directory
  • Right way to share a git repo over ssh
  • I can manually change that to

    git@github.com: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?

  • With GitHub how do I push all branches when adding an existing repo?
  • How to make Anaconda work behind HTTP proxy (not https)?
  • Git trying to push file that isn't tracked
  • Having a hard time understanding git-fetch
  • How do I open the Git GUI from a command window?
  • “git show” does not return same result as “git diff”
  • 5 Solutions collect form web for “How do I get git to default to ssh and not https for new repositories”

    Set up a repository’s origin branch to be SSH

    The GitHub repository setup page is just a suggested list of commands (and GitHub now suggests using the HTTPS protocol). Unless you have administrative access to GitHub’s site, I don’t know of any way to change their suggested commands.

    If you’d rather use the SSH protocol, simply add a remote branch like so (i.e. use this command in place of GitHub’s suggested command). To modify an existing branch, see the next section.

    $ git remote add origin git@github.com:nikhilbhardwaj/abc.git
    

    Modify a pre-existing repository

    As you already know, to switch a pre-existing repository to use SSH instead of HTTPS, you can change the remote url within your .git/config file.

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

    A shortcut is to use the set-url command:

    $ git remote set-url origin git@github.com:nikhilbhardwaj/abc.git
    

    More information about the SSH-HTTPS switch

    • “Why is Git always asking for my password?” – GitHub help page.
    • GitHub’s switch to Smart HTTP – relevant StackOverflow question
    • Credential Caching for Wrist-Friendly Git Usage – GitHub blog post about HTTPS, and how to avoid re-entering your password
    • GitHub

      git config --global url.ssh://git@github.com/.insteadOf https://github.com/
      
    • BitBucket

      git config --global url.ssh://git@bitbucket.org/.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.

    The response provided by Trevor is correct.

    But here is what you can directly add in your .gitconfig:

    # Enforce SSH
    [url "ssh://git@github.com/"]
      insteadOf = https://github.com/
    [url "ssh://git@gitlab.com/"]
      insteadOf = https://gitlab.com/
    [url "ssh://git@bitbucket.org/"]
      insteadOf = https://bitbucket.org/
    

    If you want many keys for different hosts, do this:

    Create a script

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

    and run it like

    sh script.sh myemail@example.com github.com
    

    Change your remote url

    git remote set-url origin git@github.com:user/foo.git
    

    Add content of ~/.ssh/github.com_rsa.pub to your ssh keys on github.com

    Check connection

    ssh -T git@github.com
    

    Make sure that you copy the ssh link in the first place when cloning, instead of the https link. That’s the PEBCAK way to ensure this default 😉

    Git Baby is a git and github fan, let's start git clone.