Closed14

Lemonadeを使ってAWS SSMでつないでるEC2インスタンス(Ubuntu)とローカル(Mac)のクリップボードを同期する

kyoh86kyoh86

環境:

  • Ubuntu on EC2
  • Mac
  • iTerm2
  • Neovim
  • AWS SSMによる接続
kyoh86kyoh86
  • Mac側でコピーした時のフックで、lemonadeを介してEC2側のクリップボードに反映して欲しい
  • Linux側でコピー(ここはNeovim以外コピーすることはない)した時のフックで、lemonadeを介してMac側のクリップボードに反映して欲しい
kyoh86kyoh86

難しいことは考えず、世の中の人達がVirtual Boxで使っているそれのように、Mac側でlemonade serverを起動、リモート側でlemonade clientを使うように設定する、でいいのかも知れない

kyoh86kyoh86

課題

SSMで繋ぐ関係にすぎないため、リモート(Ubuntu)側はServerアドレスを知る手段が無い。
接続時に能動的に渡してやる必要がありそう。

kyoh86kyoh86

SSH Portforwardingって、こういう時役に立つのか?

  • ローカル(Mac)側でServerを起動
  • ローカル(Mac)側でSSM Portforwarding(AWS-StartSSHPortForwardingSession)する
  • リモート(Ubuntu)側でlocalhost:xxxxを指定してlemonadeを発火

いや、これはおかしい。
SSM Portforwardingしてるのはローカル側なので。

kyoh86kyoh86

全く別の文脈で、SSH PortForwardingを使っておいたほうが良さそう。
(暗号化したほうが良い)
ただそれも結局ローカル(Mac)側の情報がないと繋げない。

kyoh86kyoh86

接続先を渡す手段は横に置いといて、とりあえず今のGlobal IP Addressでリモート(Ubuntu)からローカル(Mac)にポートフォワーディングできるか…?

どう考えても、ルーターのポートマッピングがいると思う。
自宅だったらそれくらいどうってこたないけど、会社でそれやってもらうのあまりにもあまりだな。

kyoh86kyoh86

流石に筋が悪い。
逆にUbuntuにServerを置いたらどうなる?

  • EC2への接続は自明(SSMしてる先なので、PortForwardingしてりゃあlocalhost:任意のポート、で済む)
  • Mac側のコピーを検出してlemonadeに飛ばす
  • ペーストはちょっと厄介。(clipboard pasteを呼び出す必要がある)
    • Alfred Worflowで何か助けになるか?
    • $ clipboard paste | pbcopy とかすれば良いのか?だったら一手間はあるけどなんかうまいやり方できそう。
kyoh86kyoh86

MacはClipboardのHookないのか。結構作り込まないとコピー側もどうにも解決できないな。

kyoh86kyoh86

潔く手動でリモート(Ubuntu)→ローカル(Mac)やリモート(Ubuntu)←ローカル(Mac)の同期をしたほうが良さそう。
Alfredがry

kyoh86kyoh86

ローカルで動かしてもなんかよく分からん

$ echo hoge | lemonade copy
exit status 1
kyoh86kyoh86

あー、シンプルにxclip/xselに依存(クリップボードだもんな)してるから、それがうまく動かんって怒られてるのかな。

kyoh86kyoh86

つーか、xclip/xselに依存すんだったら、X11Forwardingしたほうが早いのでは…

kyoh86kyoh86

今日はタイムアップ。xquartzインストールして、x11forwardingの設定して、Mac側でX11とMacのクリップボードつないで…とアレは結構気が重い作業だった気がするし。

このスクラップは2023/01/29にクローズされました