我目前有一个用作 git 服务器的 VPS。
此 VPS 受端口敲门保护,这意味着我必须先向特定端口发送一些数据包,然后才能连接到 22 端口(用于 SSH)。
我想我可以设置一个 git pre-push 钩子(Hook),它会触发端口敲门,这样 git 就可以连接到服务器并推送。
不幸的是,这个钩子(Hook)不起作用。这是我的做法:
vim .git/hooks/pre-push
echo "Foo"
[my port knocking command which works perfectly fine]
echo "Bar"
chmod +x .git/hooks/pre-push
当我运行 git push 时,Foo 或 Bar 都不显示。没有任何反应。
我猜想 git 在运行pre-push 钩子(Hook)之前尝试连接到远程服务器。
如何在任何操作之前运行我的端口敲门命令?
如果有人能帮我解决这个问题,我会很高兴:)
最佳答案
git hook pre-push在 git 知道它将推送什么之后执行,因此在与远程通信之后执行。
您可以设置git config core.sshCommand 'knock && ssh'
来实现您想要的。有关其工作原理,请参阅 git config core.sshCommand 的文档和 environment variable GIT_SSHCOMMAND .
关于git - 在 git push 之前敲端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42389932/