运行“git clone git@remote.git”时如何提供用户名和密码?

我知道如何为https请求提供用户名和密码,如下所示:

git clone https://username:password@remote 

但我想知道如何提供一个用户名和密码到这样的远程:

 git clone git@remote.git 

我试过这样的:

 git clone username:password@git@remote.git git clone git@username:password@remote.git git clone git@remote.git@username:password 

但他们没有工作。

 git clone https://username:password@github.com/username/repository.git 

这种方式从我的github仓库工作

根据Michael_Scharf的评论编辑:

您可以省去密码,以便它不会logging您的bash历史logging文件:

 git clone https://username@github.com/username/repository.git 

它会提示你input你的密码

user@host:path/to/repo格式告诉Git使用ssh以用户名userloginhost 。 从git help clone

ssh协议也可以使用另一种类似scp的语法:

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

@之前的部分是用户名,authentication方式(密码,公钥等)由ssh决定,而不是由Git决定。 Git没有办法将密码传递给ssh,因为根据远程服务器的configuration,ssh可能甚至不使用密码。

使用ssh-agent来避免始终input密码

如果您不想一直input您的ssh密码,那么典型的解决scheme是生成一个公钥/私钥对 ,将~/.ssh/authorized_keys放在远程服务器上的~/.ssh/authorized_keys文件中 ,然后加载您的私钥键入ssh-agent 。 另请参阅configuration通过SSH的Gitlogin一次 , GitHub关于ssh密钥密码的帮助页面 , gitolite的ssh文档以及Heroku的ssh密钥文档 。

在GitHub(或Heroku或…)上的多个帐户之间进行select

如果你在GitHub或Heroku这样的地方有多个帐号,那么你将拥有多个ssh密钥(每个帐号至less有一个)。 要select要login的帐户,必须告诉ssh要使用哪个私钥 。

例如,假设您有两个GitHub帐户: foobarfoo ssh密钥是~/.ssh/foo_github_id而你的ssh密钥是~/.ssh/bar_github_id 。 您想要使用您的foo帐户和git@github.com:bar/bar.git与您的bar帐户访问git@github.com:foo/foo.git 。 您可以将以下内容添加到~/.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 

然后你会克隆这两个存储库,如下所示:

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

完全避免ssh

有些服务提供HTTP访问作为ssh的替代方法:

  • GitHub的:

     https://username:password@github.com/username/repository.git 
  • Gitorious:

     https://username:password@gitorious.org/project/repository.git 
  • Heroku:看到这个支持文章 。

警告 :将密码添加到克隆URL将导致Git将明文密码存储在.git/config 。 要在使用HTTP时安全地存储密码,请使用凭证助手。 例如:

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

以上将导致Git每15分钟要求一次密码(默认情况下)。 有关详细信息,请参阅git help credentials