仅使用SSH Config Hostname中的部分模式

due*_*ter 8 unix ssh openssh

我有一个类似下面的SSH配置,适用于:

ssh b21
ssh 23
ssh s267
Run Code Online (Sandbox Code Playgroud)

示例.ssh/config(传递的主机名在%h处插入):

host s*
    HostName atrcu%h.example.com
    User example
    Port 22
host b*
    HostName atrcx%h.example.com
    User example
    Port 22
host ??*
    HostName atvts%h.example.com
    User example
    Port 2205
Run Code Online (Sandbox Code Playgroud)

但我想在主机中包含用户名:

ssh b21ex
Run Code Online (Sandbox Code Playgroud)

哪个会ssh到:

example@atvts21.example.com
Run Code Online (Sandbox Code Playgroud)

但相反会:

atvts21ex.example.com
Run Code Online (Sandbox Code Playgroud)

是他们的任何方式来削减/修改%h,因为它已经通过,也许连接匹配更多的模式,以获得一路上的用户名?

G. *_*ito 0

我认为您必须HostName/User为每个可能的缩写匹配创建单独的条目。然后,您可以用来%r访问每个用户的单独身份文件。这将允许您跳过用于user@host登录的操作,但代价是创建更复杂的配置文件。

您可能会更幸运地编写一个脚本或 shell 别名来取消缩写并让它们做好ssh准备。