sshconfiguration文件环境variables?

在我的pipe理员工作期间,我需要login到几个远程的ssh服务器。 我与三个不同的计算机客户端工作,所有这些都是Debian GNU / Linux系统。 我保留一个工作空间目录,我把我需要做的所有工作都放在这个目录下,该目录包含一个bashrc文件和一个ssh_config文件。

我手动同步该目录内容与脚本,使用rsync从一台客户端计算机到其他客户端,因为我移动并开始使用不同的客户端。

三个客户端上的本地用户都需要最less的configuration,所以如果我需要创build一个新的本地用户或重新安装一个客户端,我只需要rsync工作空间,并添加一个引用到我的自定义workspace/bashrc在真实用户的$HOME/.bashrc 。 我的自定义workspace/bashrc创build了几个别名,我得到我平常的环境,无论我使用的客户端。

我的自定义workspace/bashrc创build别名以这种方式连接到远程服务器:

 alias s1='ssh -F ~/workspace/etc/ssh_config server1.example.com' 

我只需在任何客户端的terminal中键入s1loginserver1,因为我的自定义ssh_config设置了所需的公钥authentication选项,正确的端口server1正在侦听并且正确的用户。

现在这就像一个魅力,只要ssh命令是我所需要的。 不幸的是,一旦我需要另外一个使用ssh命令,事情变得更加混乱。

例如,如果我需要rsync什么东西到其中一台服务器,我不得不写下整个ssh命令:

 rsync -Pavz --delete -e "ssh -F $HOME/workspace/etc/ssh_config" ... 

其他命令(如scpssh-copy-id等) scp发生类似的情况。

我希望能写

 rsync -Pavz --delete -e "ssh" ... 

而是让ssh从环境variables中取出它的configuration文件名,这样我就可以在我的bashrc设置这个环境variables,并且每个ssh调用都能自动工作。

有这样的环境variables还是有不同的解决scheme?

这是对整个概念的误用,并将工具扭曲到您的特定用例。 你应该使用这些工具。 configuration文件默认在~/.ssh/config

  • 为什么不在这三台计算机上创build一个符号链接到你的~/workspace/etc/ssh_config ,以使它在没有所有这些工作的情况下运行?

  • 自OpenSSH 7.3以来,您可以使用Include指令来实现相同的function(如果您需要,也可以在某些主机上configuration不同的configuration)。

  • 使用/etc/ssh/ssh_config系统configuration也可以完成同样的技巧。

正如你已经有…添加一个引用到我的自定义bashrc …你可以放在一起修改.ssh/config在你的workspace一些脚本。