我可以在某些SSH主机上设置'before hook'吗?

时间:2015-09-14 21:21:40

标签: ssh

我的~/.ssh/config文件中有多个主机,部分位于我的工作网络中。在访问这些之前,我需要通过运行kinit在该网络上验证自己,但我经常忘记这样做。

是否有命令在这些SSH主机上的'before hook'中运行kinit

3 个答案:

答案 0 :(得分:0)

您可以使用bash.rc文件。每次登录时都会运行。 https://wiki.ubuntuusers.de/bash/bashrc

答案 1 :(得分:0)

我最终做的是围绕典型的工作流程设置一些包装。

首先,我确保./bin中有PATH

然后我有一个名为./bin/app-ssh的脚本,在我需要kinit电话之前运行ssh

我的app-*中也有~/.gitignore_global,因此它不会被共享的回购邮件占用,但可以说这些脚本对每个人都有用。

我在其他应用中设置了类似的脚本' bin目录也是如此。我需要做的就是在我正在处理的任何应用中运行app-ssh,而且我不需要记住每个应用的任何设置内容。

答案 2 :(得分:0)

我不确定到底有没有“钩前”之类的东西,但是我可以看到有两种黑客可以达到类似的效果。

Bash函数(在某些初始化文件中,例如.bashrc,.profile等)

ssh () 
{ 
    echo "do this before ssh'ing"
    command ssh "$@"
}

我可以考虑的另一种可能性是ProxyCommand选项。在您的〜/ .ssh / config中:

Host *
  ProxyCommand sh -c 'kinit >&2 && nc %h %p'

突出点对:

  • 如果要执行此操作,建议使用脚本(可能是ensure_kinit.sh)替换原始的kinit,该脚本检查是否需要运行kinit,是否需要运行它。
  • 如果选择第二个选项,请确保将标准输出重定向到标准错误;应该保留stdin和stdout用于SSH协议网络消息。
  • 后一种方法适用于其他命令,例如git和scp,它们使用ssh进行通信,而前一种仅适用于ssh。