Luc*_*sca 7 linux ssh bash environment-variables
在我的管理工作期间,我需要登录到几个远程 ssh 服务器。我使用三台不同的计算机客户端,它们都是 Debian GNU/Linux 系统。我保留了一个工作区目录,用于放置我完成工作所需的所有内容,该目录包含一个bashrc文件和一个ssh_config文件等。
rsync当我移动并开始使用不同的客户端时,我使用脚本手动同步该目录内容,该脚本从一台客户端计算机使用到另一台客户端计算机。
这三个客户端中的每一个上的本地用户都需要最少的配置,因此如果我需要创建一个新的本地用户或重新安装一个客户端,我只需要rsync到工作区并workspace/bashrc在真实用户的$HOME/.bashrc. 我的自定义workspace/bashrc创建了几个别名,无论我使用什么客户端,我都会得到我通常的环境。
我的自定义workspace/bashrc创建别名以这种方式连接到远程服务器:
alias s1='ssh -F ~/workspace/etc/ssh_config server1.example.com'
Run Code Online (Sandbox Code Playgroud)
并且我只需s1在任何客户端的终端中键入即可登录 server1 ,因为我的自定义ssh_config设置了所需的公钥身份验证选项、正确的端口 server1 正在侦听和正确的用户。
现在这就像一个魅力,只要ssh命令是我需要的。不幸的是,一旦我需要另一个使用 的命令ssh,事情就会变得更加混乱。
例如,如果我需要对rsync其中一台服务器进行任何操作,我将不得不编写整个 ssh 命令:
rsync -Pavz --delete -e "ssh -F $HOME/workspace/etc/ssh_config" ...
Run Code Online (Sandbox Code Playgroud)
类似的事情发生在其他命令上,例如scp,ssh-copy-id和其他命令。
我希望能够写
rsync -Pavz --delete -e "ssh" ...
Run Code Online (Sandbox Code Playgroud)
相反,并让 ssh 从环境变量中获取它的配置文件名,以便我可以在我的bashrc每次ssh调用中设置该环境变量,并且每次调用都会自动工作。
是否有这样的环境变量或问题有不同的解决方案?
这有点滥用整个概念并将工具扭曲到您的特定用例。您应该更喜欢使用这些工具。配置文件默认在~/.ssh/config.
为什么不在~/workspace/etc/ssh_config所有三台计算机上从那里创建一个符号链接,使其开箱即用,而无需解决所有问题?
从 OpenSSH 7.3 开始,您可以使用Include指令来实现相同的功能而无需符号链接(因此如果需要,您还可以在某些主机上进行不同的配置)。
同样的技巧可以通过/etc/ssh/ssh_config.
因为你已经有了......添加对我的自定义 bashrc 的引用......你可以.ssh/config在你的workspace.
| 归档时间: |
|
| 查看次数: |
8299 次 |
| 最近记录: |