OpenSSH経由リモートログインからのGUIアプリケーション起動はクリア

これまで複数回に渡り、OpenSSH経由でWindowsにリモートログインし、そこからGUIアプリケーションを起動する方法を説明してきた。Linuxサーバにリモートログインするように、Windowsに対してもOpenSSH経由でリモートログインすることができる。これができるとできないのとでは利便性がまるで違うわけなのだが、残念ながらOpenSSH経由でWindowsにリモートログインした場合、ここからGUIアプリケーションは起動することはできないのだ。

例えばWindowsの仮想環境や、WSL2、Hyper-Vで動作するほかのOSなどからホストのWindowsにアクセスして処理を行いたいことがある。OpenSSHを使えば簡単に行えるのだが、残念ながらこの状態ではGUIアプリケーションを起動することができない。もともとWindowsはGUIでの利用を前提として発展してきているので、GUIアプリケーションが使えないと何かと不便なことが多い。

GUIアプリケーションの起動に関してはこれまでのやり方でクリアできた。次に欲しい機能が、テキストデータのコピー&ペーストだ。

テキストのコピー&ペースト

テキストのコピー&ペーストが、PCを使う上でとても重要かつ便利な機能の一つであることは言うまでもないだろう。

Apple製品の場合、Mac、iPhone、iPadといったプロダクト間で「ユニバーサルクリップボード」機能が動作するようになっており、MacでコピーしたテキストをiPhoneで貼り付けたり、逆にiPhoneでコピーしたテキストをMacで貼り付けたりといった操作をシームレスに行うことができる。あまり意識されていない機能かもしれないが、使い出したらなかったときのことが考えられなくなるほど便利な機能だ。しかも自動的に機能するので、手間はかからない。

OpenSSH経由でWindowsにリモートログインできるようにしたのだから、ユニバーサルクリップボードとはいかなくても、OpenSSHのリモートログイン元とログイン先とで手間をかけることなくテキストのコピー&ペーストを実現したいと思うのだ。やはり、テキストデータのコピー&ペーストは便利であり、ぜひとも使えるようにしたい。

OpenSSH経由のリモートログインだとコピーできない

しかし、ここで問題がある。OpenSSH経由でリモートログインしたときと同じように、OpenSSH経由でリモートログインした状態だと、システムクリップボードへのテキストのコピーができないのだ。

簡単な操作で動作を確認してみよう。次のスクリーンショットはWindows 11のWindows Terminalで実行したものだ。calコマンドでカレンダーを表示させ、それを「clip.exe」というコマンドでシステムクリップボードへコピーしている。

  • Windows 11 - calコマンドの出力をclip.exeでシステムクリップボードへコピー

    Windows 11 - calコマンドの出力をclip.exeでシステムクリップボードへコピー

これを実行したら、メモ帳を起動する。

  • メモ帳を起動

    メモ帳を起動

この状態で「Ctrl」+「V」を押すなどして貼り付けを実行すると、次のようにテキストデータの貼り付けが行われる。

  • メモ帳へテキストデータを貼り付け

    メモ帳へテキストデータを貼り付け

「clip.exe」というコマンドを使うと、パイプラインで送られてきたテキストデータをシステムクリップボードへ貼り付けることができる。このコマンドを使えば、OpenSSH経由でWindowsへリモートログインし、clip.exeコマンドでシステムクリップボードへコピーができるように思う。しかし、実際にはそうはいかない。

次のスクリーンショットは先ほどのサンプルと似ているが、OpenSSH経由でWindows 11にリモートログインした状態で行っている。

  • OpenSSH経由でリモートログインしたWindows 11で実行

    OpenSSH経由でリモートログインしたWindows 11で実行

メモ帳を起動する。

  • メモ帳を起動

    メモ帳を起動

この状態で「Ctrl」+「V」を押すなどして貼り付けを実行しても、何も貼り付けられない。何度実行しても同じだ。

  • メモ帳へテキストデータを貼り付けー何も貼り付けできない

    メモ帳へテキストデータを貼り付けー何も貼り付けできない

これは、OpenSSH経由でリモートログインした状態ではclip.exeが機能しないためだ。OpenSSH経由でリモートログインした状態ではシステムクリップボードにアクセスすることができない。そのため、clip.exeコマンドを使っても意味がないのだ。

今度はシステムクリップボードを何とかする

OpenSSHでリモートログインした状態というのは、PCの前に座ってWindowsを起動し、ログインした状態とは操作できる範囲が異なっている。OpenSSH経由でリモートログインした状態で操作できる対象は限定的だ。

しかし、使えないと不便なので、使えるようにしたい。OpenSSH経由でリモートログインできるのだから、できればOpenSSH経由でテキストデータのコピー&ペーストもできるようにしたいのだ。ユニバーサルクリップボードの“シンプル版”くらいまでは実現させたい。

しかし、もうその方法はある程度は見えている。結局、GUIアプリケーションを起動できるようにしたのと同じ方法でクリアすればよいのだ。そうすれば、OpenSSH経由でリモートとからのテキストデータのコピー&ペーストができるようになる。ユーザーによってはとても便利な機能になるだろう。次回は、これを実現する方法を説明していく。