解决 GIT 服务器配置好 SSH 公钥后,仍需要密码访问的问题


Git 官方文档

背景: 我在我的阿里云服务器上,创建了 Git 服务,作为远程 Git 仓库,并配置了 /home/git/.ssh/ 目录下的 authorized_keys,但是在本地客户端连接时仍需要输入密码。

解决方案: 在 客户端 ~/.ssh/ 目录下创建 config 文件,填写如下内容:

host git-server
   user server
   hostname 123.58.162.9
   port 22
   identityfile ~/.ssh/<私钥文件名>

这块,git-server 是创建的连接名,user 是连接的服务器端的用户,这里是 server,一般是 git. hotname 就填你搭建服务器的主机名,最重要的是 identityfile 这里填当前目录下你生成的私钥文件名,例如 id_rsa ,注意,不是 id_rsa.pub

然后,后面连接 git 服务时,使用

git commend git-server:/path

就可以了,也就是用 git-server 取代了之前的 git@<hostname>

另外,如果你之前已经通过 git@<hostname> 克隆了仓库,那么你可以在项目目录下 .git 文件夹中,修改 config 文件(注意,不是 ~/.ssh/ 下的 config 文件) 例如:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = git@<hostname>:<path>
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

修改上面的 url 部分,变为 git-server:<path> 这种形式就可以了。

参考资料: 阿里云 搭建Git服务器