CentOS 上,针对 ssh:// 的代码库地址, git 命令不能使用,配置 GIT_SSH / GIT_SSH_COMMAND / core.sshCommand 可解决

现象

执行 git 命令就报错:

1
2
3
4
5
sshd re-exec requires execution with an absolute path
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

分析

git 直接调用的 ssh 来使用系统的openssh客户端,
centos 上 openssh 新版本要求执行 sshsshd 时,必须给出绝对路径,
也就是 /usr/bin/ssh /usr/sbin/sshd

解决方法

2.10 之前的版本,使用 GIT_SSH 环境变量

直接使用

1
GIT_SSH='/usr/bin/ssh' git push origin master

或者,配置到启动文件中,例如 /etc/profile.d/your-custom.sh

1
export GIT_SSH=/usr/bin/ssh

git 2.10+ (Q3 2016) 之后版本,使用 GIT_SSH_COMMAND

1
export GIT_SSH_COMMAND=/usr/bin/ssh

或者,使用git的新配置项目

1
git config core.sshCommand /usr/bin/ssh