Lemonadeを使ってAWS SSMでつないでるEC2インスタンス(Ubuntu)とローカル(Mac)のクリップボードを同期する
環境:
- Ubuntu on EC2
- Mac
- iTerm2
- Neovim
- AWS SSMによる接続
- Mac側でコピーした時のフックで、lemonadeを介してEC2側のクリップボードに反映して欲しい
- Linux側でコピー(ここはNeovim以外コピーすることはない)した時のフックで、lemonadeを介してMac側のクリップボードに反映して欲しい
難しいことは考えず、世の中の人達がVirtual Boxで使っているそれのように、Mac側でlemonade serverを起動、リモート側でlemonade clientを使うように設定する、でいいのかも知れない
課題
SSMで繋ぐ関係にすぎないため、リモート(Ubuntu)側はServerアドレスを知る手段が無い。
接続時に能動的に渡してやる必要がありそう。
SSH Portforwardingって、こういう時役に立つのか?
- ローカル(Mac)側でServerを起動
- ローカル(Mac)側でSSM Portforwarding(AWS-StartSSHPortForwardingSession)する
- リモート(Ubuntu)側でlocalhost:xxxxを指定してlemonadeを発火
いや、これはおかしい。
SSM Portforwardingしてるのはローカル側なので。
全く別の文脈で、SSH PortForwardingを使っておいたほうが良さそう。
(暗号化したほうが良い)
ただそれも結局ローカル(Mac)側の情報がないと繋げない。
接続先を渡す手段は横に置いといて、とりあえず今のGlobal IP Addressでリモート(Ubuntu)からローカル(Mac)にポートフォワーディングできるか…?
どう考えても、ルーターのポートマッピングがいると思う。
自宅だったらそれくらいどうってこたないけど、会社でそれやってもらうのあまりにもあまりだな。
流石に筋が悪い。
逆にUbuntuにServerを置いたらどうなる?
- EC2への接続は自明(SSMしてる先なので、PortForwardingしてりゃあlocalhost:任意のポート、で済む)
- Mac側のコピーを検出してlemonadeに飛ばす
- ペーストはちょっと厄介。(clipboard pasteを呼び出す必要がある)
- Alfred Worflowで何か助けになるか?
-
$ clipboard paste | pbcopy
とかすれば良いのか?だったら一手間はあるけどなんかうまいやり方できそう。
MacはClipboardのHookないのか。結構作り込まないとコピー側もどうにも解決できないな。
潔く手動でリモート(Ubuntu)→ローカル(Mac)やリモート(Ubuntu)←ローカル(Mac)の同期をしたほうが良さそう。
Alfredがry
ローカルで動かしてもなんかよく分からん
$ echo hoge | lemonade copy
exit status 1
あー、シンプルにxclip/xselに依存(クリップボードだもんな)してるから、それがうまく動かんって怒られてるのかな。
つーか、xclip/xselに依存すんだったら、X11Forwardingしたほうが早いのでは…
今日はタイムアップ。xquartzインストールして、x11forwardingの設定して、Mac側でX11とMacのクリップボードつないで…とアレは結構気が重い作業だった気がするし。