在我可以连接到特定的远程机器之前,我必须运行某个本地命令。所以,而不是ssh me@remote.machine我必须做
local_command
ssh me@remote.machine
Run Code Online (Sandbox Code Playgroud)
我想自动执行此操作,以便我只需要执行ssh remote.machine.
我知道我可以通过创建自己的ssh调用脚本在 shell 级别实现这一点/usr/bin/ssh,但是我可以使用 的ProxyCommand选项来实现ssh_config吗?
据我了解,我需要类似的东西
Host remote.machine
ProxyCommand local_command; ssh me@remote.machine
Run Code Online (Sandbox Code Playgroud)
在我的~/.ssh/config文件中,但当然不完全是这样,因为它是圆形的!
Lai*_*han 13
如果使用ProxyCommand,您必须使用类似的东西/usr/bin/nc来连接服务器。
为了在连接之前调用您的命令,您需要使用sh -c "command list"将两个命令合并为一个。
Host remote.machine
ProxyCommand sh -c "local_command; /usr/bin/nc %h %p"
Run Code Online (Sandbox Code Playgroud)
更多的:
如果你local_command太复杂,你可以使用一个脚本:
cat my_connect.sh
#!/bin/bash
local_command
/usr/bin/nc "$1" "$2"
Run Code Online (Sandbox Code Playgroud)
ssh 配置变为:
Host remote.machine
ProxyCommand /path_to_my_connect.sh %h %p
Run Code Online (Sandbox Code Playgroud)
最后,您可以将自己的代理添加到 /usr/bin/nc
| 归档时间: |
|
| 查看次数: |
10197 次 |
| 最近记录: |