git - 在 git push 之前敲端口

标签 git githooks

我目前有一个用作 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 时,FooBar 都不显示。没有任何反应。

我猜想 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/

相关文章:

git - 仅对 visual studio 团队服务执行 pull 请求

laravel - 防止 git 在 git pull 时覆盖文件所有者

git - $GIT_DIR 不再设置在预提交 Hook 中

如果更改日志未更新,git hook 会发出警告?

Git rebase 并发症

git - 已签名的 powershell 脚本未在源代码管理后签名

linux - Git 不会忽略文件权限更改

Git pre-commit/pre-push hook 在提交时运行单元测试,在工作树上有未提交的更改

git - 设置Git来管理远程网站

git - 如何将 Go 与私有(private) GitLab 存储库一起使用