SSH配置替换

6

在ssh_config中是否可以编辑替换内容? 我知道我可以匹配通配符,例如:

Host project*
  HostName %h.domain.com
  User project_user

使用方法如下:

ssh project000
rsync data project123:~

但更复杂的规则是否可能?比如如何匹配主机名别名(而不必显式生成每个可能的组合)?

p    -> project000.domain.com
p1   -> project001.domain.com
p123 -> project123.domain.com

在这里声明一下:我同时使用bash和zsh。

2个回答

4
这是我管理它的方式:
我的~/.ssh/config文件:
Host project*
    ProxyCommand ~/bin/ssh_proxy %h

还有~/bin/ssh_proxy

#!/bin/zsh

function make_host {
    HOST_NUM=${1[8,999]}
    echo project${(l(3)(0))HOST_NUM}
}

exec nc `make_host $1` 22

2
不可能。OpenSSH没有任何工具可以提供这些替换。您需要预先生成配对到您的ssh_config中,以便ssh使用它们。或者,您可以创建一个Bash函数来为您执行替换,就像这样:
function ssh() {
  ssh "project${1:1}.domain.com"
}

如果要支持您的所有用例,使用 sshscprsync 和传递其他参数,就需要更加谨慎。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接