我试图让开发人员访问我们的私人git仓库。他在Mac上使用Sourcetree,我告诉他以与我完全相同的方式配置它:
ssh://(username)@our.host.name/our/path
作为网址。只要输入密码,只需输入密码即可。
(自从我设置以来已经很久了,我真的不记得我是如何在自己的Mac上做的,无论我是在Sourcetree中输入密码还是我必须打开一个终端或者其他。我的观点是,在我的Mac中这完全有效:我没有在我的Sourcetree中设置任何帐户,也没有使用它来生成任何密钥:我只有一个带URL的仓库以" ssh:// username @ host"的形式,它只是起作用。
无论如何,他做到了这一点,并且在摸索了一下后,他可以克隆回购并从Sourcetree中毫无问题地撤出,但每当他试图推动回购时,他都会收到一条错误消息,说他无法连接,服务器日志说:
Jan 24 17:52:34 vps sshd[23088]: Failed publickey for [username]
Jan 24 17:52:34 vps sshd[23088]: Failed none for [username]
Jan 24 17:52:34 vps sshd[23088]: Failed password for [username]
Jan 24 17:52:34 vps sshd[23088]: Failed password for [username]
如果他打开一个终端并从命令行使用git,他可以这样做:系统提示他输入密码,然后输入密码,然后输入密码。
我要求查看他的.ssh/
目录,并且其中有一个config
文件,上面写着:
# --- SourceTree generated
Host [username]-Github
HostName github.com
Username [username]
PreferredAuthentications publickey
IdentityFile /Users/em/.ssh/[username]-Github
UseKeyChain yes
AddKeysToAgent yes
Github的公钥/私钥对。
换句话说,他使用Sourcetree和公钥/私钥对来访问Github。
所以,很明显的事情是创建我们自己的服务器公钥/私钥对,但在这一点上,我有我的疑惑:我怎么做Sourcetree知道使用Github上哪个键,这对于我们的服务器?我手动编辑配置文件吗?我使用哪种语法来让它知道我指的是哪个存储库?
根据this link,Sourcetree实际上并没有使用SSH的配置文件...但我们的副本说" Sourcetree生成"。另一方面,该链接实际上是Windows上的Sourcetree。我在网上找到了几乎没有关于我们案例的文档(Mac上的Sourcetree,两个存储库,每个都使用不同的密钥)。