SSH セッション内からローカル マシン上でコマンドを発行するにはどうすればよいですか?

SSH セッション内からローカル マシン上でコマンドを発行するにはどうすればよいですか?

使用例:

  1. 私はMac OS Xを搭載したラップトップで作業しています() 開発サーバーにログインしています (B) を SSH 経由で接続します。
  2. 現在エディタで開いているファイル/ブランチのGitHub URLを生成するスクリプトがあります(B)。
  3. そのURLをノートパソコンのブラウザで開きたいのですが()。

その他のユースケースとしては次のようなものが考えられます。

  • ファイルを保存するたびにブラウザを更新する
  • ローカルで曲を再生するgit コマンド
  • チェックアウトしたブランチに対応する Jira チケットを開きます。

答え1

SSH リバース トンネルを利用できます。動作は次のようになります。ここで使用しているマシンでこれを実行します。これはremote_serverリモート サーバーの名前です。

ssh -R 13000:localhost:22 remote_server

local machineそして、あなたの画像に表示しますremote server:

ssh <USERNAME>@localhost -p 13000 "DISPLAY=:0 ristretto <IMAGE>"

編集: Mac OS マシンに X サーバーがインストールされていない可能性があります。私はそれを使用しませんが、基本的な考え方は同じです。リバース トンネリングを使用する利点は、ローカル マシンにパブリック IP アドレスを設定する必要がないことです。

答え2

これは最もエレガントな方法ではないかもしれませんが、Mac OS X を使用している場合、すでに他のマシンにリモート接続している場合に考えられる唯一の方法は、次のようにホストに SSH コマンドを発行することです。大きな前提条件は、Mac OS X ラップトップで SSH サーバーを起動して実行し、ルーターのファイアウォール ルールでポート 22 の SSH 接続が許可されていることを確認することです。

では、あなたのラップトップが名前付きで、リモートマシンからmachineA次のようなURLを開きたいとしましょう(http://google.comB)その後、マシン上でこのSSHコマンドを発行するだけですB

ssh username@machineA 'open http://google.com'

これにより、ローカル マシンへの SSH 接続が開始され、コマンドが実行されopen http://google.com、デフォルトのブラウザーに基づいてブラウザー ウィンドウが開き、渡された URL に移動しますhttp://google.com

関連情報