ssh 配置文件环境变量?

ssh 配置文件环境变量?

我在管理工作期间需要登录多个远程 ssh 服务器。我在客户端使用三台不同的计算机,它们都是 Debian GNU/Linux 系统。我保留一个工作区目录,将工作所需的所有东西都放在其中,该目录包含一个bashrc文件和一个ssh_config文件等。

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

三个客户端上的本地用户只需要最少的配置,这样如果我需要创建一个新的本地用户或重新安装客户端,我只需要进入工作区并在真实用户中rsync添加对我的自定义的引用。我的自定义创建了几个别名,无论我使用哪个客户端,我都会得到我通常的环境。workspace/bashrc$HOME/.bashrcworkspace/bashrc

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

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

s1我只需在任何客户端的终端上输入即可登录到服务器 1 ,因为我的自定义ssh_config设置了所需的公钥认证选项、服务器 1 正在监听的正确端口和正确的用户。

现在,只要命令ssh是我需要的,它就会像魔法一样工作。不幸的是,一旦我需要另一个命令,而该命令又使用ssh,事情就会变得更加混乱。

例如,如果我需要rsync对其中一个服务器进行任何操作,我就必须编写整个 ssh 命令:

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

类似的事情也会发生在其他命令中,例如scpssh-copy-id等等。

我希望能够写作

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

相反,让 ssh 从环境变量中获取其配置文件名,这样我就可以在我的环境中设置该环境变量,bashrc并且每次ssh调用都会自动工作。

是否存在这样的环境变量或者是否有不同的解决方案?

答案1

这有点滥用整个概念,并将工具扭曲为特定用例。您应该按应有的方式使用这些工具。配置文件默认位于 中~/.ssh/config

  • 为什么不在这三台计算机上创建一个符号链接,~/workspace/etc/ssh_config让它开箱即用,而无需做那么多工作?

  • 从 OpenSSH 7.3 开始,您可以使用Include指令来实现没有符号链接的相同功能(因此,如果需要,您也可以在某些主机上进行不同的配置)。

  • 可以使用相同的技巧对系统范围的配置进行配置/etc/ssh/ssh_config

正如你已经拥有的...添加对我的自定义 bashrc 的引用...您还可以将一些修改放在一起并将它们.ssh/config放在您的一些脚本中workspace

相关内容