首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ssh配置中主机的动态别名

ssh配置中主机的动态别名
EN

Stack Overflow用户
提问于 2019-02-21 19:14:22
回答 3查看 182关注 0票数 0

假设我们有动态数量的模式主机

test-1.mydomain.com

test-2.mydomain.com

test-3.mydomain.com

...

test-n.mydomain.com

我想通过不使用全名在每台机器上使用ssh

ex. ssh test-7.mydomain.com

而是简单地通过做

ssh test-7

有没有办法使用ssh config来像这样做类似别名的模式??

EN

回答 3

Stack Overflow用户

发布于 2019-02-21 21:03:04

您可以创建ssh配置文件并预先设置您的服务器。

看这篇教程,我希望它能对你有所帮助!

ssh config

您还可以在bash文件中创建一个函数来访问ssh。

如下所示:

代码语言:javascript
运行
复制
function ssh_test () {
  [[ $1 =~ ^('test-1'|'test-2'|'test-3')$ ]] || { echo 'Not a valid value !!' && return ;}
  domain=$1.mydomain.com
  ssh my_user@"$domain" 
}
票数 0
EN

Stack Overflow用户

发布于 2019-02-21 21:30:48

如果可以,您可以在resolv.conf文件中添加搜索域(我假设您使用的是Linux)。

您需要添加一行,如下所示:

代码语言:javascript
运行
复制
search mydomain.com

它将让SSH (和大多数其他应用程序)先查找test-n,然后查找test-n.mydomain.com

如果您不是自己管理resolv.conf文件(例如,如果您使用systemd-networkd或NetworkManager ),则必须在其配置文件中调整搜索域。

票数 0
EN

Stack Overflow用户

发布于 2022-02-04 22:52:53

是!

是的,有一种方法可以直接在您的ssh配置中执行此操作。

  1. host允许PATTERNS
  2. hostname允许TOKENS

方法:

将此代码片段添加到您的ssh配置~/.ssh/config

代码语言:javascript
运行
复制
# all test-* hosts should match to test-*.mydomain.example.com
host test-*
    hostname %h.mydomain.example.com

验证:

您可以使用ssh的-G标志来验证这一点。如果您的ssh比较旧,并且不支持-G,那么可以尝试解析详细的ssh输出。

代码语言:javascript
运行
复制
# if your ssh supports -G
% ssh test-17 -G | grep hostname
hostname test-17.mydomain.example.com


# if your ssh does not support -G
% ssh -v -v test-n blarg >/dev/null 2>&1 | grep resolv
debug2: resolving "test-n.mydomain.example.com" port 22
ssh: Could not resolve hostname test-n.mydomain.example.com: Name or service not known

备注:

Ssh使用匹配的第一条主机行。在配置文件的底部添加您的模式主机行是一种好的做法。

如果您的test-n名称模式只包含一个字符后缀,那么您可以使用?模式来进行不那么贪婪的匹配。test-?将匹配test-1 test-a test-z,但不匹配test-10

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54805759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档