运行“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以用户名user
loginhost
。 从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帐户: foo
和bar
。 foo
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
。