使用 SSH 时永久存储地址

the*_*ual 13 ssh command-line hosts

我有一些通过终端连接的远程服务器。这些服务器没有域,只有一个 IP 地址,当我获得其中一些时很难记住。

有没有办法在终端中永久存储值,以便我可以执行以下操作?

server1 = 111.222.111.222
Run Code Online (Sandbox Code Playgroud)

并键入如下命令:

ssh root@server1
Run Code Online (Sandbox Code Playgroud)

代替:

ssh root@111.222.111.222
Run Code Online (Sandbox Code Playgroud)

ste*_*ver 24

对于 SSH 连接,您可以创建一个用户配置文件~/.ssh/config并将映射放在那里,例如

Host server1
  Hostname      111.222.111.222
Run Code Online (Sandbox Code Playgroud)

您可以轻松添加其他字段,例如Port(对于非标准端口)和User(如果您在远程系统上的用户名与本地系统上的用户名不同,则很有用)。请参阅man ssh_config完整的详细信息。


cha*_*aos 14

是的,只需将它们写在文件中/etc/hosts。它具有以下语法:

1.2.3.4 servername additional_servername
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • 1.2.3.4 是IP地址
  • servername 是名字
  • additional_servername 是可选名称

保存后,您可以通过其名称访问服务器。


Ski*_*rou 8

当然,对于您的特定问题,您希望遵循 @chaos 和 @steeldriver 建议,但在一般情况下,为了“在终端中永久存储值”,您需要查看 shell 变量。如何设置它们将取决于您的外壳(我想echo $SHELL会提供相关信息)。

如果“永久”是指“只要我不退出此终端会话”,那么export server1=111.222.111.222如果您使用的是bash基于 - 基于的外壳程序(如果我没记错的话,setenv server1 111.222.111.222对于csh/tcsh基于 - 基于外壳的外壳程序),您可以简单地使用该命令。然后,您可以通过在变量前加上$ :来访问变量ssh root@$server1

如果“永久”是指“每次我启动一个新终端时”,那么您将需要在其中一个 shell init 文件中设置变量。例如,$HOME/.bashrcbash基于for的 shell 中,或者$HOME/.cshrc——大概使用与上一段中提到的相同的语法。请注意,您必须获取 init 文件的来源(例如,source $HOME/.bashrc或打开一个新的 shell 以将更改考虑在内。

注意:凭记忆回答,可能需要一些小的调整。

  • 即使重新启动计算机,我也会永久修复。我会看看这个,它可能会派上用场。 (2认同)