首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在指定“`Hostname`”时是否使用以前指定的ssh-config条目?

在指定“`Hostname`”时是否使用以前指定的ssh-config条目?
EN

Stack Overflow用户
提问于 2021-12-30 15:10:47
回答 2查看 294关注 0票数 1

编辑:--我见过这种方法起作用的情况,也见过这种情况不起作用的情况--我不确定什么时候/为什么会这样。

假设我有一个足够复杂的条目,其中我指定了多个参数以到达thathost

代码语言:javascript
复制
Host thathost
    ControlMaster auto
    ServerAliveInterval 8
    ConnectTimeout 8
    Hostname 192.168.5.1
    User mememe
    ProxyJump thejumpbox

我希望在创建额外的条目时重用这个定义,这些条目通过添加或重写一些信任来提供不同的功能。具体地指定一个备用端口(不,我不希望它出现在命令行上)。

理想情况下,我可以做这样的事情

代码语言:javascript
复制
Host theirhost
    Hostname thathost
    User themthem

代码语言:javascript
复制
Host my-remote-serialport
    Hostname thathost
    RequestTTY yes
    RemoteCommand some-script-that-launches-kermit-on-a-specific-dev-tty

代码语言:javascript
复制
Host my-remote-serialport
    Hostname thathost
    Port 3004

我严格地希望用另一个现有主机来指定一个主机,我不想修改我的Host条目来匹配一些模式“技巧”。

显然,我可以使用ProxyCommand ssh -q nc thathost...ProxyJump thathost +Hostname localhost,然后是所有其他重写(好吧,端口覆盖会将其传递给nc),但这既丑陋又浪费(额外的会话)--请不要回答这个问题。

对我来说,这是ssh-config缺少的特性,但也许我看得不够努力。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-30 16:49:29

它不能按您要求的方式使用,比如重用一个hostname定义,但是所提供的ssh解决方案可以解决更多的问题。

主机规则可以跨越多个主机。

代码语言:javascript
复制
Host thathost theirhost my-remote-serialport
    ControlMaster auto
    ServerAliveInterval 8
    ConnectTimeout 8
    Hostname 192.168.5.1
    User mememe
    ProxyJump thejumpbox

但很明显,这并不能解决修改某些属性的问题。

诀窍是,ssh配置对属性使用第一个wins策略。

在您的示例中,只需在主配置之前添加修改即可。

代码语言:javascript
复制
Host theirhost
    Hostname thathost
    User themthem

Host my-remote-serialport
    Hostname thathost
    Port 3004

Host thathost theirhost my-remote-serialport
    ControlMaster auto
    ServerAliveInterval 8
    ConnectTimeout 8
    Hostname 192.168.5.1
    User mememe
    ProxyJump thejumpbox

theirhost是在两个地方定义的,属性HostnameUser取自第一个定义,所有其他属性都来自第二个定义。

host部件还接受通配符,例如具有多个反向ssh端点的jumpbox:

代码语言:javascript
复制
HOST my_1
   port 2001

HOST my_2
   port 2002

HOST my_3
   port 2003

HOST my_*
   user pi
   hostname localhost
   ProxyJump thejumpbox
票数 3
EN

Stack Overflow用户

发布于 2021-12-30 17:00:56

没有方法引用不同的块;但是,您可以包含具有全局配置的特定配置文件。例如,创建一个供thathosttheirhostmy-remote-serialport使用的文件。我们就叫它foo-config吧。

代码语言:javascript
复制
ControlMaster auto
ServerAliveInterval 8
ConnectTimeout 8
Hostname 192.168.5.1
User mememe
ProxyJump thejumpbox

然后,您可以根据需要使用Include指令读取该命令:

代码语言:javascript
复制
Host theirhost
    Include foo-config
    User themthem

Host my-remote-serialport
    Include foo-config
    RequestTTY yes
    RemoteCommand some-script-that-launches-kermit-on-a-specific-dev-tty

Host my-remote-serialport
    Include foo-config
    Port 3004

但是,我怀疑这种方法很少是必要的,而且在大多数情况下,given by jeb方法可能是足够的。

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

https://stackoverflow.com/questions/70533421

复制
相关文章

相似问题

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