识别我正在工作的服务器

RAS*_*ASG 9 ssh command-line

从终端使用 ssh 时如何识别您在哪个服务器上?

我每天必须通过 ssh 连接到 30 个服务器,并不断在它们之间切换。
目前我正在编辑选项卡名称并编写 IP 地址以从一个跳转到另一个。

是否有自动执行此操作的方法(将服务器 IP 地址分配为选项卡名称)?任何其他不涉及在每个服务器上编辑文件的替代方案?

mur*_*uru 11

我通常使用主机名,通过$PS1. 但是,如果您不嫌麻烦,您可以开始使用 GNU screen,然后您可以像这样定义一个函数:

function ssh-title () {
    host="${@: -1}"  # You could customize it to make it identify the hostname better
    IP=$(host "$host" | awk '/has address/ { print $4 }')
    echo -ne '\033]0;'"$host"' - '"$IP"'\007'
    screen ssh "$@"
}
Run Code Online (Sandbox Code Playgroud)

解释:

  1. 即使您从本地 shell 设置标题,它也可能被远程 shell 设置覆盖。screen不直接让远程 shell 执行此操作,您必须对其进行自定义以允许它执行此操作,从而使您可以更轻松地在本地设置标题并坚持使用。
  2. 从 hostname 中查找IP,同时将最后一个参数视为主机名,并将其设置为标题。在我得到一个正确的字符串之前,我不得不做一些试验 错误echo。您可能也必须这样做。
  3. 最后,使用命令screen启动会话ssh。当命令退出时会话结束。

您可以通过多种方式对其进行自定义。例如,您可以将主机名和 IP 保存在一个文件中并从中读取(有点像ssh_config)(也可以为标题保存其他内容,例如用户名)。

现在使用ssh-title some.host连接。我认为这是您无需编辑任何服务器端即可执行此操作的唯一方法。


l0b*_*0b0 5

识别服务器的几种方法:

  • SSH 指纹- 安全,但在您重新部署时会发生变化。
  • Shell 提示 ( PS1) 和终端标题- 不安全(任何人都可以复制)但简单实用。
  • ip address - 使用 SSH 指纹确保安全,并且更易于阅读。
  • hostname - 不安全但非常易读。