我有一个类似下面的SSH配置,适用于:
ssh b21
ssh 23
ssh s267
示例.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
但我想在主机中包含用户名:
ssh b21ex
将ssh to:
example@atvts21.example.com
但反而会:
atvts21ex.example.com
是他们通过什么方式来剪切/修改%h,也许连接匹配更多模式以获得用户名?
答案 0 :(得分:1)
您可以使用match
规范而不是host
来完成示例中描述的操作。这是指定一个主机或一组主机的另一种方法。
例如:
Match user u* host t*
Hostname %hest.dev
User %r
这将与用户模式和目标主机模式匹配。
然后,命令行将类似于ssh u@t
,导致替换为u@test.dev
。
这是ssh调试输出的摘录:
debug2: checking match for 'user u* host t*' host t originally t debug3: /Users/_/.ssh/config line 2: matched 'user "u"' debug3: /Users/_/.ssh/config line 2: matched 'host "t"' debug2: match found ... debug1: Connecting to test.dev port 22. debug1: Connection established. ... u@test.dev's password:
match
可以与其他几项匹配(并且可以执行shell命令),但是与host
类似。所使用的ssh客户端选项是相同的(例如,您可以指定,并且IdentityFile
将与匹配的规范一起使用)
您可以在手册页中阅读更多内容: ssh_config
答案 1 :(得分:0)
我认为您必须为每个可能的缩写匹配创建单独的HostName/User
条目。然后,您可以使用%r
访问每个用户的单独身份文件。这将允许您跳过使用user@host
进行登录,但代价是创建更复杂的配置文件。
你可能会更好地写一个脚本或shell别名来解开你的缩写并将它们交给ssh
准备好了。