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