ssh_config 中一台主机的多个名称

Chr*_*een 3 ssh

我有一个允许 ssh 登录的主机帐户。我的主机上有几个网站,每个网站都有自己的 ssh 登录名,所以我登录为:-

ssh websitename@myhost.co.uk
ssh anothersite@myhost.co.uk
ssh yetanothersite@myhost.co.uk
Run Code Online (Sandbox Code Playgroud)

我希望在 ssh_config 中做的事情是这样的:-

Host websitename anothersite yetanothersite
    Hostname myhost.co.uk
    User %h
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为 %h 不在 User 行中替换。

有谁知道我如何实现我想要的,在 ssh 之后只输入站点名称(好吧,它实际上只是站点名称的前 8 个字母)并得到结果“ssh sitename@myhost.co.uk”?

zep*_*lin 5

您可以使用多个Host指令,例如:

Host websitename anothersite yetanothersite
    Hostname myhost.co.uk

Host websitename
    User websitename 

Host anothersite
    User anothersite 

Host yetanothersite
    User yetanothersite
Run Code Online (Sandbox Code Playgroud)

达到你想要的。

这并不完美,因为您将不得不多次复制主机名/用户名,但 AFAIK 最好使用ssh_config.

或者考虑使用 shell 级别名,如下所示:

Host websitename anothersite yetanothersite
    Hostname myhost.co.uk

Host websitename
    User websitename 

Host anothersite
    User anothersite 

Host yetanothersite
    User yetanothersite
Run Code Online (Sandbox Code Playgroud)

甚至是一个函数:

>alias websitename="ssh websitename@myhost.co.uk"
>websitename
Run Code Online (Sandbox Code Playgroud)