LoginSignup
20
26

More than 3 years have passed since last update.

どこでもMy Macに代わりほぼ無料でリモートデスクトップ接続「ここ掘れMy Mac」

Last updated at Posted at 2019-06-06

どこでもMy Mac完全終了

macOS Mojaveで廃止された標準リモートデスクトップ機能どこでもMy Mac(Back To My Mac)が、7月1日で旧バージョンのmacOSも含め完全に終了するようです。

さらば無料の公式リモート。「どこでもMyMac」が全macOSから削除予定 | ギズモード・ジャパン

「有料の公式アプリへの移行を推奨」とのことですが、なかなかいい値段します(9,800円)。

ぶっちゃけ自分もまわりもどこでもMy Macを使ってる人を見たことなかったんですが、標準の画面共有機能を利用してほぼ無料で似たようなことやってみようと思い立ちました。

macOSの画面共有=VNC

macOSの画面共有機能は、実はいにしえのVNCが使われています。
Windows独自のRDPもよくできていますが、同じくらい快適だったのでしばらく独自プロトコルだと思っていました。

なので上手くトンネルさえ掘ればどこからでもリモートデスクトップ接続できるはずです。

トンネルでリモートデスクトップ「ここ掘れMy Mac」

それでここ掘れMy Mac(Tunnel To My Mac)。もうその名の通り、ローカルとリモートからそれぞれSSHでトンネル掘ってVNCするだけです。

貼り付けた画像_2019_06_06_13_40.png

この例では、リモート接続されるサーバーは、自身の5900ポート(VNC待ち受けポート)を中継するSSHサーバー上の59001ポートに転送します。次にリモート接続するクライアントは、その中継するSSHサーバー上の59001ポートを自身の59001ポートとして転送します。

操作するクライアント上でlocalhost:59001に接続すると、操作されるサーバーの5900ポートにつながるわけです。

必要なもの

  • インターネットに接続された、SSHでログインできるサーバー(1台くらいありますよね!?)

操作されるサーバー側の準備

下準備

  1. 操作されるサーバーで画面共有サービスを有効にする(システム環境設定→共有→画面共有にチェック)。
  2. SSHサーバーへ秘密鍵でSSHログインできるようにする。
  3. 操作されるサーバーにautosshをインストールする。

SSHでログインはいつものssh-keygen -t rsa -b 4096などでid_rsa.pubを生成し、SSHサーバーのauthorized_keysに追加する操作です。

autosshは接続が切れたときに再接続してくれるSSHクライアントです。
brew install autosshでインストールしてもいいですし、他のMacから/usr/local/bin/などにバイナリをコピーしても大丈夫です。その場合、chmod a+x /usr/local/bin/autosshで実行可能にすることをお忘れなく。

起動時にautosshで自動ログイン

操作されるサーバーは、起動したときに自動で永続的なSSHトンネルを掘るように設定します。

コマンドとしてはこんな感じです。

autossh -M 0 -N -C -R 59001:localhost:5900 -i "id_rsaのパス" -o StrictHostKeyChecking=no ユーザー名@SSHサーバー

これをLaunchdに登録します。/Library/LaunchDaemons/tunnel-to-my-mac.plistとして次のファイルを作成してください。root権限が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>tunnel-to-my-mac</string>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/autossh</string>
        <string>-M</string>
        <string>0</string>
        <string>-N</string>
        <string>-C</string>
        <string>-R</string>
        <string>59001:localhost:5900</string>
        <string>-i</string>
        <string>秘密鍵id_rsaのパス(例 /Users/me/.ssh/id_rsa)</string>
        <string>-o</string>
        <string>StrictHostKeyChecking=no</string>
        <string>USER@SSHサーバー</string>
    </array>
  </dict>
</plist>

次のコマンドを実行します。これは手元の環境ではrootでなくても動作しました。

launchctl unload /Library/LaunchDaemons/tunnel-to-my-mac.plist
launchctl load /Library/LaunchDaemons/tunnel-to-my-mac.plist
launchctl start tunnel-to-my-mac

MacではなくSSHサーバー上で次のコマンドを実行して、以下のように59001での待ち受けがあれば準備完了です。

tcp        0      0 127.0.0.1:59001         0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:59001               :::*                    LISTEN     

操作するクライアント側の準備

下準備

  1. SSHサーバーへ秘密鍵でSSHログインできるようにする。
  2. 操作するクライアントにautosshをインストールする。

クライアントからのトンネルを掘る

次のコマンドを実行します。

autossh -M 0 -N -C -L 59001:localhost:59001 -i "id_rsaのパス" -o ユーザー名@SSHサーバー

これでSSHサーバーを介して、クライアントの59001がVNCサーバーの5900にトンネル接続されました。

VNCクライアントで操作する

Macの画面共有アプリを起動します。画面共有アプリは、/System/Library/CoreServices/Applicationsにあります。
汎用的なVNCクライアントとしても安定しているので個人的にも重宝してます。

Applications-(1).png

ダイアログにlocalhost:59001と入力して無事に接続されると、サインインのダイアログが表示されます。以上で完了です!

signin.png

アレンジ

複数のVNCサーバーを登録する

今回は59001を使いましたが、5900259003…と別々のポートを使えば複数のVNCサーバーにリモート接続できます。

openコマンドで画面共有を開く

macosのopenコマンドはvnc://プロトコルに対応しているので、次のコマンドでも画面共有アプリを開くことができます。
autosshでの接続とopenコマンドを組みあわせたシェルスクリプトを作ってもいいかもしれません。

open vnc://localhost:59001

クライアント側から常時接続

頻繁に接続するのであれば、クライアント側でもLaunchDaemonsディレクトリにplistファイルを作成して常時トンネル接続するのもよいでしょう。

macos以外にも

汎用的なVNC接続なので、LinuxやWindowsにもきっと応用できます。

最後に

訳あって最近はTeamViewer BUSINESSを使ってきたのですが、なかなか高いので自前のリモートデスクトップネットワークを作ってみようと思いました。どちらかというとその動機が強かったです。

以前、この記事で用意したConoHaの630円VPNサーバーを利用しました。

高速VPNを最速3分でスタート ConoHaで月額630円
https://qiita.com/miyanaga/items/590b25596d8a716e7e68

630円で、自分専用VPNとリモートデスクトップネットワークが手に入るならお得ですね!

20
26
10

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
26