この回答は、セキュリティを強化することにより、選択した回答の両方に基づいて開発されています。
その答えは一般的な形を議論しました
<command that makes output> | \
ssh <user A>@<host A> <command that maps stdin to clipboard>
セキュリティが不足することができるどこにあるssh可能なアクセス許可<user B>にhost B>するsshにhost Aして実行する任意のコマンドを実行。
もちろんB、Aアクセスはすでにsshキーによってゲートされている場合があり、パスワードが設定されている場合もあります。ただし、別のセキュリティ層により、でB実行できるコマンドの範囲が制限される場合があります。Aたとえば、このコマンドをrm -rf /呼び出すことができません。(これは、sshキーにパスワードがない場合に特に重要です。)
幸い、にsshはコマンド制限または強制コマンドと呼ばれる機能が組み込まれています。ssh.comまたはこのserverfault.comの質問を参照してください。
以下のソリューションは、一般的なフォームソリューションと、強制されたssh コマンド制限を示しています。
コマンド制限が追加されたソリューションの例
このセキュリティ強化されたソリューションは一般的な形式に従います- sshセッションからの呼び出しは次のとおりhost-Bです:
cat <file> | ssh <user-A>@<host A> to_clipboard
これ以降は、それを機能させるための設定を示します。
sshコマンド制限の設定
上のユーザーアカウントBがuser-Bで、Bがid-clip通常の方法で作成されたsshキーを持っているとします(ssh-keygen)。
次に、user-Aのsshディレクトリにファイルがあります
/home/user-A/.ssh/authorized_keys
キーを認識して接続id-clipを許可しsshます。
通常、各行の内容はauthorized_keys、承認されている公開鍵とまったく同じです(例:の内容)id-clip.pub。
ただし、強制する コマンドの前に(同じ行に)公開キーのコンテンツを付加するというコマンド制限を実施するため。
私たちの場合には:
command="/home/user-A/.ssh/allowed-commands.sh id-clip",no-agent-forwarding,no-port-forwarding,no-user-rc,no-x11-forwarding,no-pty <content of file id-clip.pub>
指定されたコマンド"/home/user-A/.ssh/allowed-commands.sh id-clip"、およびその指定されたコマンドのみが、キーid-clipを使用してへのssh接続を開始するたびに実行されますhost-A - 書かれているコマンドに関係なくssh、コマンドラインを。
コマンドはスクリプトファイルを示します allowed-commands.shの内容は
#/bin/bash
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.
Id=${1}
case "$SSH_ORIGINAL_COMMAND" in
"to-clipboard")
notify-send "ssh to-clipboard, from ${Id}"
cat | xsel --display :0 -i -b
;;
*)
echo "Access denied"
exit 1
;;
esac
への最初の呼び出し sshマシンでBは
... | ssh <user-A>@<host A> to_clipboard
文字列to-clipboardはallowed-commands.sh環境変数によって渡されますSSH_ORIGINAL_COMMAND。さらに、によってのみアクセスされるid-clip行からキーの名前を渡しましauthorized_keysたid-clip。
この線
notify-send "ssh to-clipboard, from ${Id}"
は、クリップボードが書き込まれていることを通知するポップアップメッセージボックスです。これもおそらく優れたセキュリティ機能です。(notify-sendUbuntu 18.04で動作しますが、他では動作しない可能性があります)。
ラインで
cat | xsel --display :0 -i -b
--display :0プロセスにはクリップボード付きの独自のXディスプレイがないため、このパラメーターが必要です。そのため、明示的に指定する必要があります。この値:0は、ウェイランドウィンドウサーバーを備えたUbuntu 18.04で動作します。他のセットアップでは機能しない場合があります。標準Xサーバーの場合、この答えが役立つ場合があります。
host-A /etc/ssh/sshd_config パラメーター
最後に、接続の許可、およびパスワードなしでのみ-key を使用する許可を確実にするために設定する必要がある/etc/ssh/sshd_configホストのいくつかのパラメーター:Assh
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
AllowUsers user-A
sshdサーバーに構成を再読み取りさせるには
sudo systemctl restart sshd.service
または
sudo service sshd.service restart
結論
それを設定するのは多少の努力ですがto-clipboard、同じフレームワークで並行して他の機能を構築することができます。
:'<,'>w !ssh desktop pbcopy