Ssh
通過 ssh 通信時 git 使用哪些命令?
使用
command=""
inauthorized_keys
,我可以限制可以由特定鍵執行的命令。為了使 git 遠端正常執行,我需要允許哪些命令?
從Pro Git 書中我可以推斷出這一點
git-upload-pack
並且git-receive-pack
是必需的,但還有什麼其他的嗎?注意我仍然希望能夠正常登錄使用者,只是不用這個鍵。
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
您可以通過設置回顯參數的 shim來驗證 Git 正在為任何特定命令執行什麼。製作一個腳本ssh.sh
:#!/bin/bash echo "$@" >&2
然後執行:
GIT_SSH="./ssh.sh" git push
你會看到它試圖執行的遠端命令。