可能是因为我从根本上误解了某些内容,但是当我执行以下操作时,网络协议和身份验证方面发生了什么:
在git客户端和服务器(例如Bitbucket)中添加SSH密钥对,然后git clone http://example.git
答案 0 :(得分:2)
Git可以使用不同的协议。本地文件,ssh,http(s)(智能或哑)和git协议。您可以通过所选的URL选择协议。
每个协议都使用自己的身份验证方法,或者根本不使用。只有在使用ssh协议时才使用ssh密钥。如果你使用http。
https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols
答案 1 :(得分:2)
这取决于您用来与远程存储库通信的URL。
按git clone http://example.git
,网址为http://example.git
,因此使用http协议和身份验证。 git clone
中使用的网址将存储为默认远程origin
的值。命令git remote
可以创建,删除,编辑和列出远程控制,包括origin
。一个遥控器有两个值,一个用于推送,另一个用于提取,但在大多数情况下两者都是相同的。
在需要网址的情况下,例如git fetch
,git push
和git ls-remote
,可以使用存储网址的遥控器。它更短更容易记住。如果没有远程存储了url,那么你需要创建一个然后使用它,或者直接使用url。在克隆的存储库中,git pull origin master
相当于git pull http://example.git master
。
只要远程存储库允许,您就可以使用其他协议。在克隆的存储库中,如果ssh网址为ssh://$username@$host:29418/example.git
,则您可以运行git remote add sshori ssh://$username@$host:29418/example.git
来创建新的远程sshori
。现在git pull sshori master
等同于git pull ssh://$username@$host:29418/example.git master
,并使用ssh协议和身份验证。同时,现有的origin
可以免费使用。在实际情况中,通常使用不同的远程数据库在本地存储库和不同的多个远程存储库之间建立隧道。
答案 2 :(得分:1)
由于你根本没有使用ssh密钥,为了使用ssh密钥,你需要传递一个用户名。
如果默认目录中没有任何ssh密钥,在这种情况下可能是〜/ .ssh / id_rsa。
然后您的客户端将与公钥一起检查,如果匹配,它将让您克隆。
要使用ssh,您需要执行username@whatever.whatever:/whatever/whatever.git.
。无论如何都是导致ip-adress的域名。然后使用SSH。并将寻找SSH密钥。
答案 3 :(得分:0)
您可以使用SSH或HTTP进行克隆和推送 - 只要服务器支持它(Bitbucket支持两者)。
SSH密钥仅用于SSH身份验证