在 SSH 文件中委托主机

在 SSH 文件中委托主机

我想在我的.ssh/config文件中将一个主机“委托”给另一个主机,即,我想要以下内容:

ssh machine-a

...使用 的配置machine-b

有没有办法做到这一点?


我正在使用 GCloud 计算引擎,当我执行时gcloud compute config-ssh,我的.ssh/config文件会更新如下:

# Google Compute Engine Section
#
# The following has been auto-generated by "gcloud compute config-ssh"
# to make accessing your Google Compute Engine virtual machines easier.
#
# To remove this blob, run:
#
#   gcloud compute config-ssh --remove
#
# You can also manually remove this blob by deleting everything from
# here until the comment that contains the string "End of Google Compute
# Engine Section".
#
# You should not hand-edit this section, unless you are deleting it.
#
Host holt-vm.europe-west1-b.holt-project
    HostName xxx.xxx.xxx.xxx
    IdentityFile /home/holt/.ssh/google_compute_engine
    UserKnownHostsFile=/home/holt/.ssh/google_compute_known_hosts
    HostKeyAlias=compute.XXX
    IdentitiesOnly=yes
    CheckHostIP=no

# End of Google Compute Engine Section

所以如果我想连接到我的虚拟机,我必须输入:

ssh holt-vm.europe-west1-b.holt-project

...我只想输入ssh holt-vm

我可以将其更改Host holt-vm.europe-west1-b.holt-project为,但每次运行时都Host holt-vm必须编辑该文件(重新启动虚拟机时必须运行)。.ssh/configgcloud compute config-ssh

答案1

必须输入:

   ssh holt-vm.europe-west1-b.holt-project

...我只想输入ssh holt-vm

在您的 ~/.ssh/config 中您需要设置两个选项:

CanonicalDomains europe-west1-b.holt-project
CanonicalizeHostname yesalways

可能有一个带有域后缀的更长的列表,ssh 必须在其中搜索指定的目标主机。

CanonicalizeHostname 控制是否执行显式主机名规范化。默认值为 no,表示不执行任何名称重写,并让系统解析器处理所有主机名查找。如果设置为 yes,则对于不使用 ProxyCommand 的连接,ssh(1) 将尝试使用 CanonicalDomains 后缀和 CanonicalizePermittedCNAMEs 规则规范化命令行上指定的主机名。如果 CanonicalizeHostname 设置为 always,则规范化也会应用于代理连接。如果启用此选项,则将使用新目标名称再次处理配置文件,以在匹配的 Host 和 Match 节中获取任何新配置。

相关内容