管理大量开放的 ssh 会话,这些会话与主机名的 id 相同的服务器相连

管理大量开放的 ssh 会话,这些会话与主机名的 id 相同的服务器相连

最近我经常使用几个开放的 ssh 连接来连接多个 VPS 服务器。这些服务器的主机名都遵循 ID 方法,因此很难知道我在哪台机器上工作。

我想知道是否有办法将我定义的名称放在某处作为终端的标题。因此,例如,我将 IP 123.123.123.123 与 webserver-stg 关联。打开与 IP 的连接时,webserver-stg 将自动显示为会话的名称。当然,我无法更改 VPS 服务器上的代码,因此解决方案应该是客户端的。

编辑:我正在使用 OSX 10.6 上的 terminal.app

答案1

首先,您应该尝试自动化您的过程,这样您就不必手动运行大量 ssh 会话。 To follow up on the xterm -T选项,您还可以通过 shell 转义设置 xterm 标题。我认为大多数终端程序都支持类似的功能。请参阅Xterm 标题操作指南了解详情。然后使用包装器包装您的 ssh 命令,如下所示:

#!/usr/bin/bash
if [ x$1 != x ]
then
  remote=$1
else
  read -p "host? " remote
fi
echo -ne "\033]0;$remote\007"
exec ssh $remote

我验证了它可以在 xterms 和 mac terminal.app 中运行,就像我说的,它可能在大多数模拟 exterm 的终端程序中运行。

答案2

xterm 有一个 -T 标志,可让您设置窗口标题。putty 允许您在窗口选项的行为子菜单中进行设置。

假设远程主机是 *nix,您也可以将登录提示设置为主机名。

在 bash 或 ksh 中,执行export PS1="[\u@\h]$ "结果如下:

[mazianni@europe]$

答案3

为什么不直接设置指向 ID 类型主机名的有意义的 CNAME 记录呢?然后您可以通过 CNAME 进行连接。如果您无法访问这些主机的 DNS,也可以使用 HOSTS 文件执行此操作 - 该文件适用于安装它的任何计算机。

Putty 会在其标题栏中显示您用于连接的任何内容。XTERM 则不行。

或者,如果您使用的是 PuTTY,您可以配置一个会话,在标题栏中输入您想要的名称(菜单中的窗口 > 行为选项),在目标字段中输入难看的主机名/IP 地址,并将您喜欢的名称作为会话名称。然后,您可以单击容易记住的会话名称来打开连接并获得您想要的标题。

您可能还想对 .bash_profile 做一些事情对于通过 ssh 接入的用户,以便在框中的提示中使用首选名称,但是您说您无法在框中更改任何内容(但似乎您可以更改自己的配置文件)。

答案4

PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'

将把 Mac OS X 终端窗口的标题更改为给定的字符串。然后,您可以从终端的窗口菜单中轻松选择所需的终端窗口。

如果 $HOSTNAME 没有按您希望的方式定义,您可以使用子 shell 命令插入任意字符串,如下所示:

PROMPT_COMMAND='echo -ne "\033]0;$(cat /etc/my.host.name)\007"'

相关内容