計算ノードと 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
うまくいかないこと: ローカル マシンからマスター ノードに接続し、スクリプトを使用して別のノードに移動すると、何も表示されません。
面白いのは、ローカル マシンから計算ノードに接続し、スクリプトを使用して別の計算ノードに移動すると、機能することです (ただし、計算ノードからマスター ノードに移動した場合は機能しません...)。
助けてくれてありがとう!