PuTTy 和 SSH 连接到多个服务器

PuTTy 和 SSH 连接到多个服务器

背景

我有一个 bash_profile 语句,它可以动态设置我的显示变量(我大部分时间都在使用 wifi),当我需要从我们的服务器运行一些 x windows 程序时。

if [ ! $DISPLAY ] ; then
    if [ "$SSH_CLIENT" ] ; then
        export DISPLAY=`echo $SSH_CLIENT|cut -f1 -d\ `:0.0
        echo "The display variable has been set to:"$DISPLAY
    fi
fi

问题

我的问题是,假设我打开 putty 并通过 ssh 进入 sapserver1。我的显示变量设置正确。但是!

如果我从 sapserver1 通过 ssh 进入 sapserver2,那么 sapserver2 上的显示变量将设置为 sapserver1 的显示变量。

问题

有没有办法转发或屏蔽我的工作站的连接 IP 地址,无论我 ssh 进入盒子多少次。要么这样,要么有办法传递显示变量。

答案1

你的作品有通过 ssh 进行 X 转发配置好了没有?

这是我们在这里运行的,您设置一次 DISPLAY,然后将任何进一步的 ssh 链接起来。

答案2

$DISPLAY如果您避免设置,则会更简单~/.bash_profile

相反,确保PuTTY的启用 X11 转发选项已设置。SSH 现在将自动设置$DISPLAY为合适的值。

当你从这里通过 SSH 连接到下一个服务器时,使用ssh -X(或ForwardX11 yes〜/.ssh /配置),然后再次$DISPLAY自动设置。

唯一需要注意的是,你的管理员可以禁用 X11 转发sshd_配置,因此如果这不起作用就和他们讨论。

答案3

SSH 支持远程设置变量。为此,您必须在服务器上专门将变量列入白名单,并指示客户端转发它。

脚步:

  1. ssh 进入 sapserver2 并编辑/etc/ssh/sshd_config添加以下行:

    AcceptEnv DISPLAY
    
  2. 通过执行以下命令重新启动 SSH 守护程序:

    service ssh restart
    
  3. 关闭会话。

  4. ssh 进入 sapserver1 并编辑/etc/ssh/ssh_config添加以下行:

    SendEnv DISPLAY
    
  5. 现在,如果您通过 ssh 进入 sapserver2,显示变量将被转发。

请注意,这只会在显示变量可用于 SSH 客户端时才有效(因为它已设置为export)。

如果不是,你可以使用以下命令将其提供给 SSH 客户端env

env DISPLAY=$DISPLAY ssh sapserver2

相关内容