1. ホーム
  2. linux

[解決済み】リモートSSHセッションからローカルクリップボードにデータを送信する方法

2022-04-15 15:11:59

質問

ServerFaultのボーダーラインの質問ですが、私は プログラミング シェルスクリプトがあるので、まずここで試しています :)

ほとんどの*nixには、出力をローカルのクリップボード/ペーストボードにパイプ/リダイレクトしたり、同じものから取得したりすることができるコマンドがあります。 OS Xでは、これらのコマンドは

pbcopy, pbpaste 

他のサーバーにSSH接続した状態でこの機能を再現する方法はありますか? ということです。

  1. パソコンAを使用しています。
  2. ターミナルウィンドウを開く
  3. コンピュータBにSSH接続する
  4. コンピュータBでコマンドを実行する
  5. コンピュータBの出力は、コンピュータAのクリップボードにリダイレクトまたは自動コピーされます。

しかし、出力を直接クリップボードに取り込むというワークフローに慣れてしまったので、リモートセッションでも同じようにしたいのです。

コードがあれば便利ですが、一般的なアプローチもありがたいです。

どのように解決するのですか?

同じような解決策を探していて、私に合うものを見つけたので、このスレッドを復活させました。それは、以下の提案に少し手を加えたものです。 OSXデイリー .

私の場合、ローカルのOSXマシンでターミナルを使い、SSHでリナックスサーバーに接続しています。OPのように、キーボードだけを使ってターミナルからローカルのクリップボードに小さなテキストの断片を転送できるようにしたかったのです。

解決策のエッセンス

commandThatMakesOutput | ssh desktop pbcopy

リモートコンピューターへの ssh セッションで実行すると、このコマンドの出力は コマンドを作成する (例: ls, pwd)の出力をローカルコンピュータのクリップボード("desktop"の名前またはIP)にパイプで出力しています。つまり、ネストされた ssh を使用しています。ある ssh セッションでリモートコンピュータに接続し、そこでコマンドを実行すると、リモートコンピュータは別の ssh セッションであなたのデスクトップに接続し、テキストをクリップボードに格納します。

デスクトップがsshサーバーとして設定されている必要があります(googleにお任せします)。できればセッションごとのパスフレーズを使うなど、セキュリティの必要性に応じて、sshの鍵を設定しておくと、より簡単にsshを利用することができます。

その他の例

ls  | ssh desktopIpAddress pbcopy
pwd |  ssh desktopIpAddress pbcopy

便宜上、パイプの後に必要なテキストを短縮するためのbashファイルを作成しました。

#!/bin/bash
ssh desktop pbcopy

私の場合、特別な名前のキーを使っています。

というファイル名で保存しました。 cb (私のニーモニック(ClipBoard)です)。スクリプトをパスのどこかに置いて、実行可能にして出来上がりです。

ls | cb