通过 ssh 通信时 git 使用哪些命令?

Jam*_*ell 5 ssh git account-restrictions

使用command=""in authorized_keys,我可以限制可以由特定键运行的命令。

我需要允许哪些命令才能拥有正常运行的 git remote?

临Git的书,我可以推断git-upload-packgit-receive-pack是必需的,但有什么事吗?

注意我仍然希望能够正常登录用户,只是不能使用此密钥。

Mic*_*mer 9

Git 包含一个git-shell适合用作仅限 Git 的登录 shell 的命令。它完全接受以下命令:

git receive-pack
git upload-pack
git upload-archive
git-receive-pack
git-upload-pack
git-upload-archive
cvs 服务器(用于模拟 CVS 服务器,Git 协议不需要)

所以这些是您需要允许的唯一命令。我可以访问的每个版本的 Git 都只使用带连字符的版本。

git-shell 对于你想做的事情,它本身可能已经足够好了。


您可以通过设置GIT_SSH回显参数的垫片来验证 Git 正在为任何特定命令运行什么。制作脚本ssh.sh

#!/bin/bash
echo "$@" >&2
Run Code Online (Sandbox Code Playgroud)

然后运行:

GIT_SSH="./ssh.sh" git push
Run Code Online (Sandbox Code Playgroud)

你会看到它试图运行的远程命令。