如何保存常用的 SSH 主机以供终端访问?

Vai*_* MK 27 ssh command-line bash environment-variables

我有一个我经常ssh进入的主机。但我不想一次又一次地输入它。我应该为此使用环境变量还是有更好的方法?

我不介意保存存在于单个 bash 会话之外的常用变量的通用解决方案。

Ser*_*nyy 46

环境变量的目的是将信息传达给您在 shell 中启动的多个命令/进程,这些命令或进程希望在环境中存在。通常,此类变量包括选项,例如LESS将常用选项传递给lesspager 的变量,PERL5LIB用于在非标准位置查找 perl 模块,LC_LANG以传达命令应用于输出的语言。

如果 URL 供您自己与特定命令一起使用,请使用别名(例如)alias au='firefox https://askubuntu.com或函数(例如)open_url(){ firefox "$@" }打开您在命令行上作为函数位置参数提供的任意 URL。

在某些情况下,例如ssh,您可以在配置文件中定义连接属性,如Lekensteyn 的回答中所述

  1. 定义~/.ssh/config具有以下内容的文件

    Host meh
        HostName meh.example.com
        User admin
        Port 1234
        IdentityFile ~/.ssh/id_rsa
    
    Run Code Online (Sandbox Code Playgroud)
  2. 用于ssh meh使用配置文件连接到主机。

  • 我也会使用`IdentitiesOnly yes`。 (2认同)

小智 15

另外我建议创建一个别名。

在您的主目录中编辑您的.bashrc(或者可能.profile或类似的文件)。添加多个别名,例如:

alias go='ssh url1'
alias go2='ssh url2'
Run Code Online (Sandbox Code Playgroud)

然后,重新登录/重新连接并输入gogo2


Rob*_*edl 7

我建议结合SergiyLewis 的答案以获得最大的懒惰效率:

首先创建一个主机条目ssh

定义~/.ssh/config具有以下内容的文件

    Host meh
        HostName meh.example.com
        User admin
        Port 1234
        IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

现在ssh meh有效,但这可能仍然很长。有自动完成功能(在ssh[Blank] 之后),但仍然需要输入大量内容。

所以让我们也定义一个alias

.bashrc在本地主目录中编辑您的。添加一个别名,如:

alias meh='ssh meh'
Run Code Online (Sandbox Code Playgroud)

现在,您只需meh在终端窗口中输入即可连接到“meh.example.com” 。如果您想使用更长的字符串而不是“meh”,您实际上可以使用 [Tab] 键来自动完成。

或者,如果您真的很懒,只需将单个字符定义为别名:

alias m='ssh meh'
Run Code Online (Sandbox Code Playgroud)

因此,如果您输入m并按 Enter/Return,您的 ssh 连接将立即启动!


JoL*_*JoL 5

另一种选择是使用 shell 的历史功能。您可以在 bash 中按 Ctrl-r 并键入上次 ssh 到该位置的唯一子字符串。如果没有唯一的子字符串,您可以使用最适合作为稀有子字符串的任何内容,并通过反复按 Ctr-r 直到找到它来浏览历史条目。例如,您可以输入 Ctrl-r 和“monkeys”或“codemonkeys”或“odemon”或“kong”并得到

ssh kong@codemonkeys.some-server.com
Run Code Online (Sandbox Code Playgroud)

从上次开始,希望只有在您输入整个内容的时候。

使用 shell 的历史功能,真的没有理由多次输入任何长命令。