You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH连接正常,但通过SSH执行git push失败,原因何在?

Git Push 反复要求输入密码但SSH连接正常的解决办法

问题情况

我在NearlyFreeSpeech.net服务器上配置了git hook,用以下命令设置了远程仓库:
git remote add nfsn ssh://USERNAME@NFSNSERVER/home/private/git/REPONAME.git

但执行git push nsfn master时,一直卡在密码输入提示,输入正确密码后还是反复弹出。不过直接执行ssh USERNAME@NFSNSERVER能正常登录,用户名和密码都确认过没问题。

解决步骤

  • 先检查远程仓库名称的拼写:你设置的远程仓库名是nfsn,但push时写的是nsfn——这是明显的拼写错误!先执行git remote -v确认远程仓库的正确名称,然后用正确的名字执行push,比如git push nfsn master,这大概率能直接解决问题。

  • 查看Git SSH连接的详细日志:如果拼写没问题,执行带调试参数的push命令,看具体哪里出错:
    GIT_SSH_COMMAND="ssh -v" git push nfsn master
    日志里会显示SSH连接的每一步,比如是密钥验证失败,还是服务器端的仓库权限问题。

  • 确认服务器端仓库的权限:登录服务器后,检查仓库目录的所有者和权限:
    ls -ld /home/private/git/REPONAME.git
    确保目录所有者是你的USERNAME,权限至少是755(或更严格的700),如果不对,用以下命令调整:
    chown -R USERNAME:USERNAME /home/private/git/REPONAME.git
    chmod -R 700 /home/private/git/REPONAME.git

  • 改用SSH密钥登录代替密码:既然直接SSH能登录,说明密码没问题,但Git可能没自动用密钥。先在本地生成密钥(如果还没的话):
    ssh-keygen
    然后把本地~/.ssh/id_rsa.pub里的内容复制到服务器的~/.ssh/authorized_keys文件中,确保服务器上.ssh目录权限是700,authorized_keys权限是600:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    之后Git应该会自动用密钥验证,不用再输密码。

内容的提问来源于stack exchange,提问作者logeyg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:31:00