git clone认证失败:如何克隆Web服务器上的远程仓库?
嘿,我来帮你搞定这个问题!你遇到的核心矛盾其实是认证方式不匹配——虽然你能用SSH登录服务器,但Git弹出用户名密码框的时候,它大概率是在走HTTPS认证流程,不是SSH,所以你输入SSH凭证肯定会失败。下面一步步给你解决:
第一步:先确认你用的是SSH仓库地址
你之前执行的git clone命令如果是HTTPS开头的(比如https://your-server/repo.git),那Git默认会触发HTTPS认证,弹框要的是Web仓库的登录账号密码,不是SSH的密钥信息,这就难怪你输SSH凭证会失败了。
正确的SSH仓库地址格式应该是下面两种之一:
- 标准SSH格式:
root@你的服务器IP:/仓库的绝对路径/repo.git - 完整SSH协议格式:
ssh://root@你的服务器IP/仓库的绝对路径/repo.git
如果是你自己在服务器上创建的裸仓库,直接用上面的地址就行;如果是Web管理的仓库(比如Gitea、GitLab),去仓库页面找「SSH地址」的选项,复制那个链接。
第二步:用SSH地址重新克隆(或切换远程地址)
情况1:还没克隆仓库
直接执行正确的SSH克隆命令:
git clone root@你的服务器IP:/path/to/your/repo.git
这时候Git会自动调用你本地的SSH密钥来认证,只要你之前能SSH登录root,这里应该就不会弹框,直接克隆成功。
情况2:已经用HTTPS克隆过仓库
不想重新克隆的话,在本地仓库目录里执行命令切换远程地址为SSH:
git remote set-url origin root@你的服务器IP:/path/to/your/repo.git
之后再执行git pull或git push就会用SSH认证了。
第三步:确保本地SSH密钥已配置到服务器
虽然你能手动输密码SSH登录root,但为了让Git自动认证(不用每次输密码),最好把本地的SSH公钥添加到服务器的/root/.ssh/authorized_keys文件里:
- 本地终端执行(Windows用Git Bash或PowerShell):
ssh-copy-id root@你的服务器IP - 按照提示输入root密码,公钥就会自动添加到服务器对应位置,之后SSH连接(包括Git操作)都不用输密码了。
关于是否需要创建OpenSSH账户?
完全不需要!你已经拥有root权限,直接用root账户操作Git仓库就足够了。不过从安全角度建议你后续可以创建一个专门的git用户,只给它仓库目录的权限,把你的公钥加到这个用户的authorized_keys里,这样不用暴露root权限,但这是优化操作,不是必须的。
内容的提问来源于stack exchange,提问作者Black

