GNU/Linux >> Linux の 問題 >  >> Linux

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

同じ種類の解決策を探していて、自分に合った解決策を見つけたので、このスレッドを復活させます。これは、OSX Daily からの提案を少し変更したものです。

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

ソリューションの本質:

commandThatMakesOutput | ssh desktop pbcopy

リモート コンピューターへの ssh セッションで実行すると、このコマンドは commandThatMakesOutput の出力を受け取ります (例:ls、pwd) を実行し、出力をローカル コンピューターのクリップボード (「デスクトップ」の名前または IP) にパイプします。つまり、ネストされた ssh を使用します。1 つの ssh セッションを介してリモート コンピューターに接続し、そこでコマンドを実行すると、リモート コンピューターは別の ssh セッションを介してデスクトップに接続し、テキストをクリップボードに書き込みます。

デスクトップをsshサーバーとして構成する必要があります(これはあなたとグーグルに任せます)。できればセッションごとのパスフレーズを使用するか、セキュリティのニーズに応じて、高速な ssh の使用を促進するために ssh キーを設定すると、はるかに簡単になります。

その他の例:

ls  | ssh desktopIpAddress pbcopy
pwd |  ssh desktopIpAddress pbcopy

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

#!/bin/bash
ssh desktop pbcopy

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

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

ls | cb

ssh サーバーのリバース トンネル ポート

既存のすべてのソリューションには次のいずれかが必要です:

  • クライアントの X11 (ある場合は xclip サーバー上でうまく動作します)または
  • クライアントとサーバーが同じネットワーク内にあること (職場で自宅のコンピューターにアクセスしようとしている場合は、この限りではありません)。

別の方法もありますが、コンピューターへの ssh の方法を変更する必要があります。

私はこれを使い始めましたが、見た目ほど威圧的ではないので、試してみてください。

クライアント (ssh セッションの起動)

ssh [email protected] -R 2000:localhost:2000

(ヒント:これをキーバインドにすると、入力する必要がなくなります)

クライアント (別のタブ)

nc -l 2000 | pbcopy

注:pbcopy がない場合 その後、ちょうど tee

サーバー (SSH セッション内)

cat some_useful_content.txt | nc localhost 2000

その他の注意事項

実際、ssh セッションの最中でもトンネルを開始する方法はありますが、見た目ほど悪くないものから人々を怖がらせたくありません。ただし、興味があれば後で詳細を追加します


リバース ssh 接続を必要としない優れたソリューションを見つけました!

リモートホストで xclip を、OSX システムで ssh X11 転送と XQuartz とともに使用できます。

これを設定するには:

<オール>
  • XQuartz をインストールします (私はソリスト + pivotal_workstation::xquartz レシピでこれを行いましたが、その必要はありません)
  • XQuartz.app を実行
  • XQuartz 設定を開きます ( +, )
  • 「同期を有効にする」ことを確認してください 「CLIPBOARD の変更時にペーストボードを更新」 チェックされます
  • ssh -X remote-host "echo 'hello from remote-host' | xclip -selection clipboard"

  • 私のお気に入りの方法は ssh [remote-machine] "cat log.txt" | xclip -selection c です .これは、リモートからローカルに ssh したくない (またはできない) 場合に最も便利です。

    編集:Cygwin ssh [remote-machine] "cat log.txt" > /dev/clipboard で .

    編集:nbren12 からの有益なコメント:

    <ブロック引用>

    ほとんどの場合、SSH ポート フォワーディングを使用してリバース ssh 接続をセットアップできます。 RemoteForward 127.0.0.1:2222 127.0.0.1:22 を追加するだけです ローカル .ssh/config のサーバーのエントリに 、次に ssh -p 2222 127.0.0.1 を実行します これにより、接続がローカル マシンにリダイレクトされます。 – nbren12


    Linux
    1. SSH セッションがタイムアウトしないようにする方法

    2. リモート マシンに ssh した後、scp でローカルに戻すにはどうすればよいですか?

    3. リモート(VPN経由)のsshセッションから1を初期化すると、ssh接続が強制終了されます

    1. SCP Linuxコマンド–リモートからローカルへのSSHファイル転送方法

    2. D-Bus と SSH X-Forwarding を設定して、SSH が終了時にハングしないようにする方法は?

    3. ssh をローカル ネットワークからのみ root ユーザーに許可する方法は?

    1. AndroidからLinuxでSSH接続する方法

    2. リモートサーバーからローカルマシンにファイルをコピーする方法は?

    3. Ctrl-c Sshセッションでの処理?