Mac
Ubuntu
SSH
tmux

MacからUbuntuにSSH接続し,tmux上でマウスによるコピーアンドペーストを行う

More than 3 years have passed since last update.


  • 追記: 9/28

現在,Webアプリを作成する際に,MacからLinuxサーバへログインして作業しています.

tmuxには,デフォルトでコピーモードが用意されているようですが,どうにも使いづらかったので,マウスを使ってコピーアンドペーストする方法を探していました.

リモートログインせずに同様のことを行う記事は数多くあったのですが,今回の状況はWeb検索でもなかなか解決しなかったので,ログを載せておきます.


やりたかったこと

Mac PC (OS X Marvericks)から,Linuxサーバ(Ubuntu 13.10)にSSHを用いたリモートログインを行い,接続先のLinuxサーバでtmuxを立ち上げた状況を仮定します.

SSH接続には公開鍵認証を使っているとします.

このtmux上でマウスによるコピーアンドペーストを行いたいです.

以下,Mac PCを「クライアント」,Linuxサーバを「サーバ」と呼ぶことにします.


手順


クライアントの設定

tmux上のコピペをうまく設定する方法

こちらの,"Macの場合"の設定を参考にする.

.zshrcは上記の記事の,「追記(2013-07-08)」の設定を参照した.

lethe2211@client$ brew install reattach-to-user-namespace


tmux.conf

set-window-option -g mode-mouse on



.zshrc

alias tmux-copy='tmux save-buffer - | pbcopy'

if [ -n "$TMUX" ]; then
alias pbcopy="reattach-to-user-namespace pbcopy"
fi


こちらの記事では,OSによって.zshrcを使い分けているが,今回はあまり気にしない方向で.

設定ができたら,クライアント上のtmuxでコピペができているか確認する.

lethe2211@client$ tmux

# マウスで適当に領域を指定する
lethe2211@client$ tmux-copy
lethe2211@client$ tmux save-buffer - # またはC-vを押下

これでコピーした領域の文字が標準出力に出てくればOK.


.ssh/configの設定

クライアント・サーバ間でクリップボードを共有するためには,X11プロトコルの転送が必要らしい(よくわからない).

ubuntu - Using clipboard through SSH in vim - Super User

こちらを参考に,クライアントの~/.ssh/configを設定する.


~/.ssh/config

Host {myserver}

HostName {myserver}
User {myusername}
IdentityFile {/path/to/your/private/key}
ForwardX11 yes
ForwardX11Trusted yes

重要なのは,"ForwardX11"と,"ForwardX11Trusted"を"yes"にしておくこと.

{}内は各自読み替えて下さい.


サーバの設定

まず,サーバ側がX11転送を許可しているかを確認する.

X11 Forwarding - なんなんなん行く?

こちらを参考にする.

lethe2211@server$ cat /etc/ssh/sshd_config | grep X11

これで,

X11Forwarding yes

みたいな記述が見つかればOK.

あとは,

端末からクリップボードへのコピペする

と,

tmux上のコピペをうまく設定する方法

の"Ubuntuの場合"

を参考に,xselのダウンロードとaliasの設定を行う.

lethe2211@server$ sudo apt-get install xsel


tmux.conf

set-window-option -g mode-mouse on



.zshrc

alias pbcopy='xsel --clipboard --input'

alias pbpaste='xsel --clipboard --output'
alias tmux-copy='tmux save-buffer - | pbcopy'

これでできたはず.

Mac上での確認と同じようにして,問題がなければOK.

"tmux-copy"の初回実行の際に,XQuartzのインストールを求められるかもしれない.

その際は,素直にインストールする.


領域の選択後に,いちいち"tmux-copy"を入力するのが少し面倒ですが,かなりマシになったかと思います.


追記: 9/28

指摘をいただき,「option + 範囲選択」で,ここでやりたかったことはできることがわかりました…

今までの苦労は何だったのか…