SSHを介して入力を受け入れ、入力としてPythonスクリプトを実行し、SSHを介して出力を返すサービスを設定するにはどうすればよいですか?

SSHを介して入力を受け入れ、入力としてPythonスクリプトを実行し、SSHを介して出力を返すサービスを設定するにはどうすればよいですか?

大規模なディープラーニングモデルを実行するGPUと共にUbuntuを実行するサーバーがあります。私はこのサーバーが最初にSSHを介して入力を含む要求を受け入れてから、その入力をDLモデルに供給して出力を取得し(btw、Pythonスクリプトを介してモデルを実行)、最後にSSHを介して出力を元の送信者に返しますしたいです。どうすればいいですか?サービスを設定しようとしましたが、より良い方法があるかもしれません。どんな提案でも歓迎します。ありがとうございます。

ベストアンサー1

man sshd;セクションAUTHORIZED_KEYS FILE FORMAT;オプションcommand="command"

例は次のとおりです。

$ head ~/.ssh/authorized_keys
command="cat > /home/vagrant/ssh-output" ssh-rsa AAAAB3NzaC1yc...
$ ls ssh-output
ls: cannot access 'ssh-output': No such file or directory
$ echo 'blah blah blah' | ssh -i .ssh/id_rsa localhost 
Pseudo-terminal will not be allocated because stdin is not a terminal.
$ cat ssh-output 
blah blah blah

シェルが作成されないことを確認してください。代わりに、クライアント側のパイプ入力がsshSSHサーバー側のcat標準入力に渡されます。あなたのシナリオでは、command=""Pythonスクリプトのパスに置き換えることができます。

この機能を設定するには、まずユーザーとユーザーのpub_keyを知る必要があります。これは汎用構成ではありません。ユーザー名と秘密鍵を公開すると、ユーザーにそれを使用するように指示し、それを汎用サービスとして提供できるようになりますが、共有秘密鍵(特に公開/一般的に使用される鍵)は容易に乱用される可能性があります。

また、この構成により、クライアントはこのコンピュータへのポート転送またはX11転送を開くことができます。これは制限される可能性があります。関連マニュアルページをお知らせします。

おすすめ記事