使用SSH时永久存储地址

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

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

server1 = 111.222.111.222 

并输入如下命令:

 ssh root@server1 

代替:

 ssh root@111.222.111.222 

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

 Host server1 Hostname 111.222.111.222 

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

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

 1.2.3.4 servername additional_servername 

哪里:

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

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

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

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

如果“永久”表示“每次启动新终端”,则需要在其中一个shell init文件中设置变量。 例如在$HOME/.bashrc用于基于bash的shell,或$HOME/.cshrc – 可能使用与前一段中提到的语法相同的语法。 请注意,您必须获取init文件(例如source $HOME/.bashrc或打开一个新的shell以更改要考虑的内容)。

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

不是问题的直接答案(混乱和钢铁驱动器已经提供了我认为最好的文字解决方案),但如果你只需要在大多数情况下在一个地址ssh给一个用户,那么看编辑主目录中的.bash_aliases文件应该很有用,因为您可以为整个终端命令创建别名。

具体答案非常好。

但是,一般情况下,如果你想在shell中定义/设置一些东西,只需编写一个脚本来执行它,然后用source或者执行它. 当你想要有效的设置。

如果它是你想要的东西,你可以在.profile(对于登录shell)或.bashrc中为所有shell(如果你使用bash)提供它。

使用这样的方法,您可以根据需要设置多个脚本来设置不同的工作环境,只要您确保它们在先调用另一个之后调用其中一个时不会相互踩踏。