我需要在管理工作期间登录几个远程ssh服务器.我在三个不同的计算机客户端工作,所有这些都是Debian GNU /
Linux系统.我保留了一个工作区目录,在那里我放置了完成工作所需的所有内容,该目录包含一个bashrc文件和一个ssh_config文件.
当我移动并开始使用不同的客户端时,我手动将该目录内容与使用rsync从一台客户端计算机到其他客户端计算机的脚本同步.
三个客户端中的每个客户端上的本地用户需要最少的配置,因此,如果我需要创建新的本地用户或重新安装客户端,我只需要rsync工作区并添加对我的自定义工作区/ bashrc的引用用户的$HOME / .bashrc.我的自定义工作区/ bashrc创建了几个别名,无论我使用的是哪个客户端,我都会得到通常的环境.
我的自定义工作区/ bashrc以这种方式创建别名以连接到远程服务器:
alias s1='ssh -F ~/workspace/etc/ssh_config server1.example.com'
我只需在任何客户端的终端中键入s1即可登录server1,因为我的自定义ssh_config设置了所需的公钥认证选项,正确的端口server1正在侦听和正确的用户.
现在这就像魅力,只要ssh命令是我需要的.不幸的是,只要我需要另一个命令反过来使用ssh,事情就会变得更加混乱.
例如.如果我需要rsync任何东西到其中一个服务器,我被迫编写整个ssh命令:
rsync -Pavz --delete -e "ssh -F $HOME/workspace/etc/ssh_config" ...
其他命令也会发生类似的事情,例如scp,ssh-copy-id和其他命令.
我想能写
rsync -Pavz --delete -e "ssh" ...
相反,并让ssh从环境变量中获取配置文件名,这样我就可以在我的bashrc中设置该环境变量,并且每个ssh调用都会自动运行.
是否有这样的环境变量或是否有不同的问题解决方案?