Mavericksに移ってから色々いじってた時に、 一度キーボードが効かなくなってどうしようもなくなってしまった ことがあったんですが、 外部からアクセスして設定変更することで 助かりました。 ということでその辺りの外部からMacに接続する方法についてのまとめです。
sshでログイン
Macでは簡単にsshサーバーを立てられる様になっていて、
システム環境設定
共有
でリモートログイン
を有効にするだけで
sshで外から入れる様になります
1。
この設定画面にIPアドレス(またはホスト名)も書かれてるので 書かれてる通りにsshコマンドを打てば外部から入れます。
Mac特有なのがポートの変え方で、
Linuxの普通のsshだと
/etc/sshd_config
等で変えるのが通常で、
Macにもこのファイルがあるんですが、
ここでportを
Port 23
等しても変更されません。
変更するには/System/Library/LaunchDaemons/ssh.plist
のファイル内のSockServiceName
の値を
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
- <string>ssh</string>
+ <string>23</string>
<key>Bonjour</key>
<array>
<string>ssh</string>
<string>sftp-ssh</string>
</array>
</dict>
</dict>
の様に変更します(sshだと22になる模様)。
/etc/sshd_config
を変更することで他のオプションはほとんど通常通り
変更できますがssh.plist
にあるものでさらに上書きするので
ポートについてはこちらで上書きされるようです。
設定を反映するためにsshサーバーを再起動するには共有
の中でリモートログイン
のチェックを
一度外してもう一度つければOK。
また、ターミナルから
$ sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
$ sudo launchctl load /System/Library/LaunchDaemons/ssh.plist
の様にssh.plist
をロードし直す事でもOKです。
これで、
$ ssh -p 23 localhost
などとして23番にログイン出来るようになっているはずです。
上の設定ファイルの意味を良く理解してないんですが、
試しに上のSocketの部分を全部削って起動しなおしてみたら
今度はsshd_config
でどのポートに設定しても(しなくても)
ssh出来なくなってしまいました。
何にしろ何らかの値をssh.plist
から与える様になっている様です。
ちなみに、このちょっと変わったsshサーバーの仕様上、ssh-agent
も
ちょっと特殊で、sshで入った後にそこからGitHub等にsshを使って接続する場合には
注意が必要です2。
VNCでログイン
VNCもMacでは設定が簡単で、共有
から画面共有
を有効にするだけで
VNCサーバーが立ち上がります。
VNCのポートは通常5900ですが、こちらも
変更するためにはLaunchDaemons下の
/System/Library/LaunchDaemons/com.apple.screensharing.plist
の中で、
<key>Sockets</key>
<dict>
<key>Listener</key>
<dict>
<key>Bonjour</key>
<string>rfb</string>
<key>SockServiceName</key>
- <string>vnc-server</string>
+ <string>15900</string>
</dict>
</dict>
の様にSockServiceName
の値をvnc-server
から好きな番号に変更します3。
これで外からWindowsやLinuxからでもVNCで接続出来ますし、
Macからでは(これもOS X 10.7 Lionから?)
Finderからメニューの
移動
サーバーへ接続
へ行き、サーバーアドレスに
vnc://...
と共有に表示されてる様に記入すれば
簡単にVNC接続出来ます。
ダイナミックDNS
上にあるsshやVNCはIPアドレスが必要なので、 固定IPアドレスを使ってない場合、 いつの間にか変わってることがあります。
自宅なので固定IPのサービスを利用してもいいですが、 安くても1000円くらい。 なので、本気でサーバー立てるとかでない限り わざわざ加入するものあれなので、 無料のダイナミックDNS(DDNS)のサービスを使うと良い感じ。
色々とありますが、今はNo-IP
というサービスを使ってます。
無料で使っていると、2ヶ月に1回くらい
更新の確認のためのメールが来てサイトにアクセスして
更新の確認の作業をする必要がありますが、
それ程大変な作業でもないので苦にならないと思います。
無料だとホスト名に使えるドメイン名が.zapto.org
等
限られたものですが、
有料サービスではもう少し使えるのが増えたりもします。
サイトの方でホスト名を設定して、 Dynamic Update Client (DUC) をインストールして登録しておけばOK。
これでsshでもVNCでもIPアドレスを気にせずに 常に同じホスト名でログイン出来るようになります。
追記: 2014/07/11
ルータ内にいてルータの設定がいじれなかったり、 多段ルータになっていて直接グローバルIPのところまで辿りつけないような場合、 ダイナミックDNSを使うことも出来ませんが、 ルータ越しでポート指定なども出来ない場合にもSSHで接続出来るようにする で書いた様にすればなんとか接続出来る様に出来ます。
追記ここまで
MacからMacに接続したい場合
MacではiCloud
どこでもMy Mac
にを有効にして、
さらに共有
でファイル共有
の項目を有効にしておくと、
iCloud経由でAppleにMacの情報が送られて
端末の名前と固定ナンバーを組み合わせたホスト名(と結びつけるIPv6のアドレス)が割り当てられ、
そのホスト名だけで常に接続出来る様に出来ます。
iCloud内だけで出来るDDNSみたいなもんだと思っておいて良いんだと思います。
どこでもMy Mac
を有効にした状態でターミナルからdsn-sd -E
を実行すると
$ dns-sd -E
Looking for recommended registration domains:
DATE: ---Mon 28 Oct 2013---
00:00:00.000 ...STARTING...
Timestamp Recommended Registration domain
00:00:00.001 Added local
00:00:00.002 Added icloud.com
- > btmm
- - > members
- - - > 123456789
こんな感じで情報が得られ、最後の数字が端末に割り振られてる数字です。
どこでもMy Mac
が有効になってないとlocal
までしか表示されないので
システム環境設定からチェックしなおして見て下さい。
これと共有
で指定しているコンピューター名を組み合わせて
$ ssh [email protected]
とすれば(USERはログイン先Macのユーザー名)外からssh出来ます。 ただし、iCloud経由で同期されているMac同士だけ。
と、以前Lionの時は自分自身へsshを試すことまではできた(と思う)んですが、 Mavericksにアップグレードしてから試したら
ssh: connect to host computer-name.123456789.members.btmm.icloud.com port 22: Operation timed out
となって接続出来ず。
どこでもMy Mac
を有効にしない場合は
ssh: Could not resolve hostname computer-name.123456789.members.btmm.icloud.com: nodename nor servname provided, or not known
となるので、ホスト名は有効になってるっぽいんですがsshが弾かれてます。
$ ssh -2 -6 [email protected]
みたく認証プロトコルやIPv6をちゃんと指定しても駄目。 一応なんらか動いてるようなので、自分の環境がなにか悪いだけだと思いますが。。。
LogMeIn
画面接続をするのはVNCの代わりに LogMeIn を使うとIPアドレスのこととかも気にしなくて良いので 簡単です。
無料でも基本的な操作は出来るので充分使えます。 また、ブラウザがクライアントになるので クライアント側に特別何かインストールする必要はありません。
モバイルからもアプリがあって (LogMeIn) モバイルからも簡単に接続、操作出来ます。 (VNCでもMocha VNC Lite等モバイルで使えるものもあります。)
他にもTeamViewer と言う似たような物もあります。 使い勝手はLogMeInと同じ様な感じでした。
-
通常のsshサーバーと違うのか、これを 有効にしても
ps -A
などとしてもsshd
は立ち上がってません。 外からsshで入って来た後に見ると動いていて sshされた時だけ立ち上がる?様な感じ。 ↩ -
このファイルが存在するのはOS X 10.7 Lion以降だそうです: How to change the default screen sharing / VNC port number on Mac OS X? ↩