0

我正在研究一个带有计算节点和 2 个主节点的小型集群。我可以使用 ssh 跃点从本地机器连接到主节点或直接连接到计算节点。这是我本地机器上的 .ssh/config:

Host master0
     HostName 132.166.138.122
     User OJ239416

Host master1
     HostName 132.166.138.121
     User OJ239416

Host node*
     ProxyCommand ssh -Y master1 nc %h %p
     User OJ239416

一旦连接到任何计算或主节点,我可以使用此脚本移动到另一个节点(以保留环境和工作目录):

#!/usr/bin/env sh

if [[ $# != 1 ]]; then
    echo 'USAGE:'
    echo '  sssh remotename'
    exit 1
fi

DIR=$PWD

printenv | sed -e '/_=.*/ d;s/\([^=]\+\)=\(.*\)/export \1="\2"/' > $HOME/.sssh-env.txt
echo "$PWD" > $HOME/.sssh-pwd.txt
ssh -X $1

在我的 .bashrc 中有这个:

if [ -f "$HOME/.sssh-env.txt" ]; then
    source $HOME/.sssh-env.txt
    cd $(cat $HOME/.sssh-pwd.txt)
    rm $HOME/.sssh-env.txt
    rm $HOME/.sssh-pwd.txt
fi

什么不起作用:如果我从本地计算机连接到主节点,然后使用我的脚本移动到另一个节点,我没有显示。

有趣的是,如果我从本地计算机连接到一个计算节点,然后使用脚本移动到另一个计算节点,它就可以工作(但如果我从一个计算节点转到一个主节点......)。

感谢您的帮助!

4

0 回答 0