user@host:path/to/repo格式告诉Git使用ssh以用户名user登录主机。从git帮助克隆:
另一种类似scp的语法也可以用于ssh协议:
[user@] host.xz: / / repo.git /路径
@前面的部分是用户名,身份验证方法(密码、公钥等)由ssh决定,而不是Git。Git无法将密码传递给ssh,因为ssh甚至可能不使用密码,这取决于远程服务器的配置。
使用ssh-agent可以避免一直输入密码
如果您不想一直输入ssh密码,典型的解决方案是生成一个公钥/私钥对,将公钥放在~/。打开远程服务器上的Ssh /authorized_keys文件,并将私钥加载到Ssh -agent中。还可以参考配置Git通过SSH登录一次,GitHub的SSH密钥密码帮助页面,gitolite的SSH文档和Heroku的SSH密钥文档。
在GitHub(或Heroku或…)
如果你在GitHub或Heroku等地方有多个帐户,你将有多个ssh密钥(每个帐户至少一个)。要选择要作为哪个帐户登录,必须告诉ssh要使用哪个私钥。
例如,假设你有两个GitHub帐户:foo和bar。foo的ssh键是~/。Ssh /foo_github_id, bar的Ssh密钥为~/. Ssh /bar_github_id。你需要用你的foo帐户访问git@github.com:foo/foo.git,用你的bar帐户访问git@github.com:bar/bar.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帮助凭证。