Ssh

在 /etc/hosts 或 ssh_config 中使用別名

  • September 7, 2016

我已經配置了一個堡壘或(跳轉)框來訪問虛擬專用網路。

#ssh_config
Host bastion
HostName 14.90.140.120
User me
IdentityFile ~/.ssh/me
ForwardAgent yes

Host 10.1.*
User me
IdentityFile ~/.ssh/me
ProxyCommand ssh bastion -W %h:%p

我能夠毫無問題地通過 ssh 進入堡壘和 10.1.1.6 地址。

我想做的是添加如下條目。注意:我目前沒有時間使用 DNS,但這是我的首選方法。

#/etc/hosts
10.1.1.6    my-host-inside-vpc.corp.internal

但是,當我這樣做並嘗試訪問機器時,我得到以下資訊

➜  ~ ssh -vvv my-host-inside-vpc.corp.internal
    debug1: Reading configuration data /home/me/.ssh/config
    debug1: /etc/ssh/ssh_config line 19: Applying options for *
    debug2: ssh_connect: needpriv 0
    debug1: Connecting to my-host-inside-vpc.corp.internal [10.1.1.6] port 22.

此時操作超時。

Host匹配您連接時使用的名稱,而不是dns 解析後的 ip。

嘗試Host *corp.internal改用。

根據我們在評論中的討論,如果您想使用符號名稱,但需要將它們解析為堡壘主機的 IP,那麼您可以像這樣在 ProxyCommand 中使用子表達式。

ProxyCommand ssh bastion -W $(getent hosts $h | cut -d " " -f1):%p

引用自:https://serverfault.com/questions/801395