git在linux上安装后需配置用户信息、生成并部署ssh密钥、设置正确权限及shell,否则易出现commit作者异常、permission denied(publickey)或push失败等问题。

Git 在 Linux 上不是“装完就能用”,尤其当你想搭私有仓库或和远程平台(如 GitHub、Gitee)协作时,安装只是第一步;真正卡住人的,是 git config 配置没生效、ssh-keygen 生成的密钥没配对、或者 git clone 报 Permission denied (publickey) 这类错误。
怎么确认 Git 已安装且版本够新
别只跑 git --version 看有没有输出。2.30 以下的版本在处理某些 SSH 密钥类型(比如 ed25519)或子模块时可能出问题。建议直接运行:
git --version
如果输出低于 2.30,按系统升级:
- Ubuntu/Debian:
sudo apt update && sudo apt install git -y(确保源已更新) - RHEL/CentOS 8+:
sudo dnf install git-all -y - CentOS 7:
sudo yum install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm -y && sudo yum install git -y
为什么 git config --global 不起作用
常见现象:执行了 git config --global user.name "xxx",但 git commit 后日志里还是显示 unknown 或旧名字。原因通常是:
- 当前目录下存在
.git/config,它会覆盖全局配置;用git config user.name(不带--global)检查本地仓库级设置 - 用户名/邮箱含空格或特殊字符但没加引号,导致实际写入的是截断值
- 用了
sudo git config,结果改的是 root 用户的配置,而你日常用的是普通用户
安全做法是:先删掉本地仓库里的 user.name 和 user.email,再统一用 git config --global 设置,并用 git config --list --show-origin 确认来源和值。
git clone 报 Permission denied (publickey) 怎么快速定位
这不是 Git 错误,是 SSH 认证失败。别急着重生成密钥,先做三件事:
- 运行
ssh -T git@github.com(或对应平台域名),看是否提示 “You’ve successfully authenticated”;如果失败,说明密钥根本没被 agent 加载 - 确认
~/.ssh/id_rsa.pub(或id_ed25519.pub)内容已完整复制进 GitHub/Gitee 的 SSH keys 页面——注意别多空行、少字符,也别把私钥当公钥贴上去 - 检查
~/.ssh/config是否有冲突配置,比如写了Host github.com却指定了错误的IdentityFile
临时绕过:把克隆地址从 git@github.com:user/repo.git 改成 https://github.com/user/repo.git,能 clone 通就坐实是 SSH 问题。
初始化裸仓库(bare repo)后 push 失败的典型原因
你执行了 git init --bare /path/to/repo.git,也 chown -R git:git /path/to/repo.git 了,但客户端 git push origin main 仍失败。关键点在于:
- 服务器上
/home/git/.ssh/authorized_keys文件权限必须是600,且属主是git用户;chmod 600 /home/git/.ssh/authorized_keys必须执行 -
/home/git/.ssh目录权限不能高于755,推荐700;chmod 700 /home/git/.ssh -
/etc/passwd中 git 用户的 shell 必须设为/usr/bin/git-shell,否则即使密钥正确,SSH 也会拒绝非交互式命令
最容易被忽略的是:git-shell 路径因发行版不同可能为 /usr/libexec/git-core/git-shell(如 CentOS),务必用 which git-shell 确认真实路径再改 /etc/passwd。











