14
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

  • 追記: 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 + 範囲選択」で,ここでやりたかったことはできることがわかりました…

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
14
Help us understand the problem. What are the problem?