git 推送前敲端口

Port knocking before git push

我目前有一个 VPS 用作 git 服务器。

这个 VPS 受 port-knocking 保护,这意味着我必须先向特定端口发送一些数据包,然后才能连接到 22 端口(使用SSH)。

我想我可以设置一个 git pre-push 钩子,触发端口敲门,这样 git 就可以连接到服务器和推送。

不幸的是,这个钩子不起作用。这是我的做法:

vim .git/hooks/pre-push

echo "Foo"
[my port knocking command which works perfectly fine]
echo "Bar"

chmod +x .git/hooks/pre-push

FooBar 当我 运行 git push。没有任何反应。

我猜 git 在 运行 之前尝试连接到远程服务器 预推挂钩.

如何运行我的端口敲门命令任何操作之前?

如果有人能帮我解决这个问题,我会很高兴:)

git hook pre-push 在 git 知道它会推送什么之后执行,因此在与远程对话之后执行。

您可以设置git config core.sshCommand 'knock && ssh'来达到您想要的效果。有关其工作原理,请参阅 git config core.sshCommand and the environment variable GIT_SSHCOMMAND.

的文档