根据登录凭据更改 bash 提示符中显示的主机名

war*_*ren 3 ssh bash hostname

我在一台服务器上托管多个域。

我希望能够更改 bash 提示符中显示的主机名,以指示我在 ssh 进入服务器时选择的主机名。

我的提示如下:

\u@\h
Run Code Online (Sandbox Code Playgroud)

这显示为:

user@hostname
Run Code Online (Sandbox Code Playgroud)

我如何更改\h以显示我登录的域(blah.net、hmm.com 等)?

Dig*_*oss 5

事实证明,通过字符串匹配ssh来查找行ssh_config(5),因此如果所有 IP 都相同就可以了。

那么你想要的是

  • .ssh/config每个系统都有不同的线路,用于HostName给出ssh真实的主机域名
  • 在本地环境中有三个不同的环境变量,其中有不同的提示
  • .ssh/config使用 发送不同的变量SendEnv,请参阅 中的每一行man ssh_config
  • 从所有三个中选择您的提示(两个始终为空)
  • 放入and (也应该AcceptEnv *有效。)/etc/ssh/sshd_configsudo kill -1 $(cat /var/run/sshd.pid)
    AcceptEnv E1 E2 E3

例子。

客户.ssh/config

Host barb
        HostName deb
        SendEnv BARB

Host jane
        HostName deb
        SendEnv JANE

Host deb barb jane
        Protocol 2
        ForwardAgent yes
        Compression no
Run Code Online (Sandbox Code Playgroud)

服务器.bashrc

PS1='$BARB$JANE.otherstuff...'
Run Code Online (Sandbox Code Playgroud)

服务器/etc/ssh/sshd_config

...
AcceptEnv *
Run Code Online (Sandbox Code Playgroud)

  • 我会担心 `AcceptEnv *` 是一个安全问题。无论如何,“不要打开不需要的东西”都适用。 (2认同)