ローカルのMacとリモートのCentOS7上のtmux2.5とクリップボード共有したい

背景

手元のMacBookPro上にtmuxを導入してクリップボード共有する記事はよく出てくる。 しかし、自分の場合VPS上で作業することが多いので、VPS上に環境構築をしたいと考えた。 (出先や、違うPCから作業することもあるため、手元のマシンに構築するのが面倒だった。) VPS上のCentOS7上にtmux2.5を導入した上でローカルマシンとクリップボードの共有しようとしたが、 意外と記事がなくハマったので記事として残しておこうと思う。

前提条件

ローカルマシン MacBookPro
リモートマシン CentOS7.3
tmux 2.5

※tmuxはすでに導入済みとする

手順

リモートマシン CentOS

xsel をインストールする

$ sudo yum install -y xsel --enablerepo=epel

ssh して使うのでsshの設定を編集
$ vim /etc/ssh/sshd_config

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

のようにしておく

sshd リスタート

$ sudo systemctrl restart sshd

tmuxから使えるように設定する
$ vim .tmux.conf

bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel “xsel -ib”

ローカルマシン Mac

x11 接続するために xquartz をインストール
$ brew update
$ brew cask install xquartz
インストール後 Mac再起動する(しないと環境変数DISPLAYがセットされない)
Xauthの作成
$ open /Applications/Utilities/XQuartz.app
# ~/.Xauthorityを作成してくれます
xhostに追加

$ sudo xhost your.server.name

動作確認

リモートマシンにログインして動作確認する。

リモート→ローカル

$ cat /etc/redhat-release | xsel -bi 実行後にローカルマシンで貼り付けして CentOS Linux release 7.3.1611 (Core) のように出ていれば問題ない

ローカル→リモート

ローカルで適当なものをコピーしてリモートで xsel -bo でコピーしたものが出力されていれば問題ない

tmuxで使う

上記の手順でtmuxの設定もしてあるので、そのままtmux上のキーバインドでコピペできます。
※tmuxの設定再読み込みしておくことをお忘れなく

お疲れ様でした。