Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I provide a username and password when running "git clone [email protected]"?

Tags:

git

I know how to provide a username and password to an HTTPS request like this:

git clone https://username:password@remote 

But I'd like to know how to provide a username and password to the remote like this:

git clone [email protected] 

I've tried like this:

git clone username:password@[email protected] git clone git@username:[email protected] git clone [email protected]@username:password 

But they haven't worked.

like image 570
coordinate Avatar asked Apr 07 '12 12:04

coordinate


People also ask

How do I pass a username and password in git?

username and password. We can supply the username and password along with the git clone command in the remote repository url itself. The syntax of the git clone command with the http protocol is, git clone http[s]://host.


2 Answers

Based on Michael Scharf's comment:

You can leave out the password so that it won't be logged in your Bash history file:

git clone https://[email protected]/username/repository.git 

It will prompt you for your password.

Alternatively, you may use:

git clone https://username:[email protected]/username/repository.git 

This way worked for me from a GitHub repository.

like image 93
Bassetassen Avatar answered Sep 25 '22 06:09

Bassetassen


The user@host:path/to/repo format tells Git to use ssh to log in to host with username user. From git help clone:

An alternative scp-like syntax may also be used with the ssh protocol:

[user@]host.xz:path/to/repo.git/

The part before the @ is the username, and the authentication method (password, public key, etc.) is determined by ssh, not Git. Git has no way to pass a password to ssh, because ssh might not even use a password depending on the configuration of the remote server.

Use ssh-agent to avoid typing passwords all the time

If you don't want to type your ssh password all the time, the typical solution is to generate a public/private key pair, put the public key in your ~/.ssh/authorized_keys file on the remote server, and load your private key into ssh-agent. Also see Configuring Git over SSH to login once, GitHub's help page on ssh key passphrases, gitolite's ssh documentation, and Heroku's ssh keys documentation.

Choosing between multiple accounts at GitHub (or Heroku or...)

If you have multiple accounts at a place like GitHub or Heroku, you'll have multiple ssh keys (at least one per account). To pick which account you want to log in as, you have to tell ssh which private key to use.

For example, suppose you had two GitHub accounts: foo and bar. Your ssh key for foo is ~/.ssh/foo_github_id and your ssh key for bar is ~/.ssh/bar_github_id. You want to access [email protected]:foo/foo.git with your foo account and [email protected]:bar/bar.git with your bar account. You would add the following to your ~/.ssh/config:

Host gh-foo     Hostname github.com     User git     IdentityFile ~/.ssh/foo_github_id Host gh-bar     Hostname github.com     User git     IdentityFile ~/.ssh/bar_github_id 

You would then clone the two repositories as follows:

git clone gh-foo:foo/foo.git  # logs in with account foo git clone gh-bar:bar/bar.git  # logs in with account bar 

Avoiding ssh altogether

Some services provide HTTP access as an alternative to ssh:

WARNING: Adding your password to the clone URL will cause Git to store your plaintext password in .git/config. To securely store your password when using HTTP, use a credential helper. For example:

git config --global credential.helper cache git config --global credential.https://github.com.username foo git clone https://github.com/foo/repository.git 

The above will cause Git to ask for your password once every 15 minutes (by default). See git help credentials for details.

like image 32
Richard Hansen Avatar answered Sep 22 '22 06:09

Richard Hansen