元のマシンでSSH経由でコマンドを実行します。

元のマシンでSSH経由でコマンドを実行します。

nostromoDebianテストで対話型シナモンデスクトップを実行しているローカルコンピュータがあります。その上にgnome-terminalが実行されており、SSH端末がリモートシステムで開いていますsulaco。ローカル端末で実行したように動作するようにssh端末でコマンドを実行したいと思います。たとえば、

mooseboys@nostromo:~$ ssh sulaco
mooseboys@sulaco:~$ run-on-ssh-origin xeyes

run-on-ssh-origin上記のコードが与えられたら、最終的にローカルの既存のデスクトップ環境内で実行されているものと同様のものを探していますxeyes。つまり、他のローカルgnome端末で実行するのと同じです。

私が知っている唯一の解決策は、sshSSH端末で別のコマンドを実行することです。nostromosulaco

mooseboys@sulaco:~$ ssh nostromo xeyes

これはGUI以外のコマンドでは機能しますが、Xアプリケーションの場合、既存のインタラクティブデスクトップにウィンドウを作成しないようです。デスクトップを列挙して実行するコマンドを挿入する方法があると確信していますが、より簡単で強力な方法を探しています。理想的には、このようなものがrun-on-ssh-origin存在しますが、そうでない場合、たとえば、SSHを介して実行されているGUIアプリケーションが既存の対話型デスクトップを持っている場合に使用する必要があることを指定する方法はありますか?

答え1

GUI以外のコマンドが実行される理由は、そのコマンドがターミナルチェーン(nostromo-> sulaco-> nostromo)で実行されるためです。

X11アプリケーションがこのように動作するには、すべてのクライアントとサーバーでX11転送を有効にするだけです。ノーストロモがここのウェイターです。その後、X11出力をserver2からserver1、クライアントに効果的に渡すことができます。これは技術的に可能ですが、この正確な構成ではわずかなパフォーマンス低下とわずかな無駄になる可能性があります。

ただし、sshコマンドで表示環境変数を簡単に変更できます。

ssh nostromo 'DISPLAY=:0; xeyes'

これは X11 出力をローカルディスプレイにリダイレクトします:0。これは、見積もり要件に応じてどのようなコマンドを送信できるかに直接影響します。

お客様の地域のディスプレイ番号を知る必要があります。シングルユーザーの場合、これは一般的です:0。しかし、状況は異なる場合があります。

関連情報