是否可以为SSH编写“无操作”的Proxy命令?

时间:2015-11-11 19:44:56

标签: bash ssh

我最近编辑了我的SSH配置,以便Proxycommand链接到可执行的bash文件,我想执行一些逻辑。如果满足condition1,那么我想执行某个Proxycommand。否则,我想要一个“禁止操作”;基本上我不想在这种情况下代理。

我的SSH配置如下:

Host *
    ProxyCommand <link_to_bashfile> %h %p

但是,如果我只是在bash文件中没有做任何事情,我会收到以下错误:

ssh_exchange_identification: Connection closed by remote host

如果在bash文件中未满足ProxyCommand none,是否有办法实质上模拟condition1?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用-o选项覆盖配置文件中的ProxyCommand指令,这样您就可以运行ssh而无需进入无限循环的代理命令。也就是说,在bash文件中,

host=$1
port=$2

if <condition>; then
    whatever the actual command is to connect
else
    ssh -o ProxyCommand=none -p "$port" "$host"
fi

答案 1 :(得分:0)

原来以下代码有效:

host=$1
port=$2

if <condition>; then
    whatever the actual command is to connect
else
    exec nc $1 $2
fi