Nohupを使用している場合でも、GNUパラレルを使用するとssh_askpass権限が拒否されました。

Nohupを使用している場合でも、GNUパラレルを使用するとssh_askpass権限が拒否されました。

外部ノードネットワークを介してコードを実行しようとしています。 「マスター」ノードへのアクセス権を持ち、利用可能な5つのノードのクラスタ全体にわたってタスクを分割するスクリプトをssh実行できます。他の前提条件とともに、このコマンドを含むスクリプトがparallelあります。bashparallel

私が使用した最後のコマンドは次のようになりました。

parallel -S node0,node1,node2,node3,node4 --ssh-delay 0.25 --delay 0.5 'run {1} {2}' ::: foo ::: bar

しかし、私が作業しているクラスターは比較的頻繁に停止することが知られています。たとえば、約5分間アイドル時間が経過するとエラーが発生し、Broken pipe接続sshが切断されます。そのため、上記のbashスクリプト(上記のparallel行を含む)を実行してnohupssh接続をアクティブに保つ必要があります。

ただし、実際のコードにはかなりの計算時間が必要なため、SSHの切断に関連するエラーが発生します。

ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory^M
Permission denied, please try again.

ボスノードから別のノードにnode0接続してもパスワードは必要ありません。これにより、空席がなくなったという苦情やログインできないという警告メッセージがnode1表示されます。parallel

parallel: Warning: There are no job slots available. Increase --jobs.
parallel: Warning: Using only -1 connections to avoid race conditions.
parallel: Warning: ssh to node0 only allows for 0 simultaneous logins.
parallel: Warning: You may raise this by changing /etc/ssh/sshd_config: MaxStartups and MaxSessions on node0.
parallel: Warning: You can also try --sshdelay 0.1

私は、ボスノードへの接続を閉じた結果、クラスタ内の他のノードへのSSH接続を早期に閉じるのは難しいことが進行していると思いますnode0

ssh-agentssh-copy-idおよびGNUパラレルチュートリアルに従って接続を確立し、sshpassMaxStartupsおよびMaxSessionsパラメータを設定しようとしましたが、/etc/ssh/sshd_config役に立ちませんでした。さらに、コード計算時間を短縮すると、並列命令が完全に実行され、期待どおりに動作します。

かなり長い時間がかかるプログラムを実行するときにSSH接続が中断されないようにする方法はありますか?parallelそれとも別のことが起こっていますか?

答え1

接続を維持するServerAliveIntervalには で設定できる.ssh/config

答え2

他のノードにアクセスするために使用されたSSHキーが正しくないというエラーの原因が見つかりました。したがって、問題はGNUの並列性やnohupにはありません。

まず、問題を理解するために設定について詳しく説明します。まず、マイコンピュータで複数のスレーブノードに接続されているlocal「ボス」ノードに接続します。ノードに接続するときにSSH転送を有効にすると、追加のSSH接続で自分のコンピュータのキーを誤って使用しました。したがって、接続が失われると、ノードへの接続を確立するための正しいSSHキーにアクセスできなくなります。bossslavessshbosslocallocalbossbossslaves

ssh-keygenこれを使用してに追加して、新しい公開SSHキーを生成します~/.ssh/authorized_keys。その結果、SSHとSSHの間の接続がlocal失われてもboss、自分の公開鍵を使用してSSH接続を確立できますbossslaves

GNUは接続を確立するためにsshを並列に使用するため、キーが正しく設定されていると権限(およびその他の関連)の問題は消えます。切断の問題を解決し、プロセスが継続して実行されている間にノードの切断を可能にするためにnohup設定と共に使用されます。ServerAliveInterval 60/etc/ssh/ssh_configboss

関連情報