我想在我的.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/config
gcloud compute config-ssh
答案1
必须输入:
ssh holt-vm.europe-west1-b.holt-project
...我只想输入
ssh holt-vm
在您的 ~/.ssh/config 中您需要设置两个选项:
CanonicalDomains europe-west1-b.holt-project
和
CanonicalizeHostname yes
或always
可能有一个带有域后缀的更长的列表,ssh 必须在其中搜索指定的目标主机。
CanonicalizeHostname
控制是否执行显式主机名规范化。默认值为 no,表示不执行任何名称重写,并让系统解析器处理所有主机名查找。如果设置为 yes,则对于不使用 ProxyCommand 的连接,ssh(1) 将尝试使用 CanonicalDomains 后缀和 CanonicalizePermittedCNAMEs 规则规范化命令行上指定的主机名。如果 CanonicalizeHostname 设置为 always,则规范化也会应用于代理连接。如果启用此选项,则将使用新目标名称再次处理配置文件,以在匹配的 Host 和 Match 节中获取任何新配置。