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 是可选名称保存后,您可以通过其名称访问服务器。
当然,对于您的特定问题,您希望遵循 @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/.bashrc在bash基于for的 shell 中,或者$HOME/.cshrc——大概使用与上一段中提到的相同的语法。请注意,您必须获取 init 文件的来源(例如,source $HOME/.bashrc或打开一个新的 shell 以将更改考虑在内。
注意:凭记忆回答,可能需要一些小的调整。