あかぎれが痛い

ついでにお腹も痛い。

MacBookからiMac(とそのゲストOS)に繋いでヌクヌクとお勉強した話

こんにちは。

先週インフルエンザB型になり、1週間会社休んで有給が吹き飛んだあかぎれです。お陰で東京の大雪の影響を全く受けなかったんで結果オーライでしょうか?

先週からめっちゃ寒くて死にそうでした。私がいつも使っている母艦のiMacは間取りの関係でダイニングキッチンに設置していますが、うちは安アパートなのでダイニングキッチンは玄関と直結。冷気が半端ないので今の季節はiMacどころかダイニングに留まることすらちょっと厳しい状態。
なので、7年前に買ってそろそろ挙動が怪しいMacBook Proクリーンインストールし、画面共有やらSSH接続やらを駆使してiMacの環境へ接続してLaravelをベッドの中でぬくぬくとお勉強しようと努力した結果、ネットワーク周りのお勉強にもなったので共有しようというネタになります。

私のITスキル

ちょっとパソコンに詳しいレベルの一般人とお考えください。以前はPHPとかJavaScriptでゴリゴリWebアプリ作ってましたが7年のブランクがあります。React?Laravel?なにそれ?
Linuxの最低限の操作ができる前提では書いてます

我が家のネットワーク構成(略図)

大前提となるので今回の話に関係する部分だけ晒します。
f:id:seal2501:20180126152840j:plain
VirtualBoxvagrantを使ってます。

1. iMacの画面共有をオン

とりあえずMacBook ProからiMacを操作したかったので、画面共有を有効にしました。同一ドメインであればボタン一つで設定完了です。

システム環境設定→共有→「画面共有」にチェック
f:id:seal2501:20180126155019p:plain

※この図の通りファイル共有にもチェックを入れたので、Finderのサイドバーの共有ペインに同一ドメイン上のPC一覧が表示されますので、そこからボタン一つで画面共有ができます。
f:id:seal2501:20180126155221p:plain

2. iMacSSH接続できるようにする

基本的に設定不要です。コマンドから

MacBook:~ akagire$ ssh username@domainname

って叩いてあげれば、最初だけSSHのセキュリティ警告が表示されますがすんなりとつながります。つながったのですが、私の環境では日本語ファイル名が?に化けちゃいました。

iMac:~ akagire$ ls -l /Users/akagire/Pictures
total 99999
drwxr-xr-x   75 akagire  staff      2550  1  5 20:00 gpx
drwxr-xr-x  814 akagire  staff     27676  1  5 20:07 jpg
drwxr-xr-x    4 akagire  staff       136  1 28  2017 psd
drwxr-xr-x   15 akagire  staff       510  1 21 08:45 raw
drwxr-xr-x@  11 akagire  staff       374  1 26 08:29 iphoto.photoslibrary
-rw-r--r--@   1 akagire  staff    349912  7 20  2015 ????.png      #化けてる

いろいろ調べたところ、Bash環境変数がおかしいっぽい。てことで確認。

iMac:~ akagire$ echo $LANG
  #なにも帰ってこない

iMac:~ akagire$ locale
LANG=C
LC_COLLATE=C
LC_CTYPE=C
LC_MESSAGES=C
LC_MONETARY=C
LC_NUMERIC=C
LC_TIME=C
LC_ALL=

iMacの環境言語は日本語なんだけどなぁ…まぁよくわからんので、付け焼刃的に

iMac:~ akagire$ export lang=ja_jp.UTF-8

を実行しましたが、やはり日本語が化ける。

iMac:~ akagire$ echo $LANG
  #やっぱりなにも帰ってこない

というか、環境設定が変わってなかった。なぜ…

てことで、iMacの.bash_profileに書いてみた。

iMac:~ akagire$ vi ~/.bash_profile

#行末に以下の行を追記
export LANG=ja_JP.UTF-8

:w
:q

iMac:~ akagire$ source ~/.bash_profile

iMac:~ akagire$ echo $LANG
ja_JP.UTF-8

iMac:~ akagire$ locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=

iMac:~ akagire$ ls -l /Users/akagire/Pictures
total 99999
drwxr-xr-x   75 akagire  staff      2550  1  5 20:00 gpx
drwxr-xr-x  814 akagire  staff     27676  1  5 20:07 jpg
drwxr-xr-x    4 akagire  staff       136  1 28  2017 psd
drwxr-xr-x   15 akagire  staff       510  1 21 08:45 raw
drwxr-xr-x@  11 akagire  staff       374  1 26 08:29 iphoto.photoslibrary
-rw-r--r--@   1 akagire  staff    349912  7 20  2015 小金井のお魚.png #化けなくなった!

うまくいきました。

3. iMacVirtualBox上で動いてるゲストOSにもSSHで接続したい

vagrant前提なのであしからず。

a. ゲストOSをネットワークに参加させる

qiita.com
こちらを参考にしました。横着者なので、ブリッジするインタフェースは未指定です。
VagrantFileを修正します。

# ゲストOSのNAT設定。vagrant initのデフォルト。
# これだけでVirtualBoxのネットワーク設定してくれるからvagrant便利!
  config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" 
# 追記した行。これでうちのドメインのIPがDHCPで勝手に割り当てられる
  config.vm.network :public_network

修正したらvagrant up。qiitaの記事の通りどれにするか聞いてきます。

==> default: Clearing any previously set network interfaces...
==> default: Available bridged network interfaces:
1) en1: Wi-Fi (AirPort)
2) en0: Ethernet
3) en2: Thunderbolt 1
4) en3: Thunderbolt 2
5) bridge0
6) p2p0
7) awdl0
==> default: When choosing an interface, it is usually the one that is
==> default: being used to connect to the internet.
    default: Which interface should the network bridge to? 

1を入力してエンター(ッターン

んでホストOSからSSHで繋いでIPをチェック。

iMac:centos akagire$ vagrant ssh
…
[vagrant@localhost ~]$ ip addr show | grep inet
#略
    inet 192.168.1.16/24 brd 192.168.1.255 scope global dynamic eth1
#略

うちのドメインは192.168.1.1/24なのでちゃんとIPが振られました。

b. MacBookからvagrantCentOSSSH接続

ここからが毎回ハマるやつ。この辺がうまく行かなくてパソコン初期化するたびにgit cloneが動かなくて毎回苦労します。(バカ
まずは単純にsshでつなごうとして怒られます。

macbook: ~ akagire$ ssh vagrant@192.168.1.16
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

SSHの公開鍵をvagrant環境に登録してないので当たり前です。まずは、MacBookで鍵を作成しましょう。

macbook:~ akagire$ cd ~/.ssh
macbook:.ssh akagire$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/akagire/.ssh/id_rsa): mother_vagrant_rsa #にしました。
Enter passphrase (empty for no passphrase): #今回はローカルで使うので未設定でOKでしょう…
Enter same passphrase again: 
Your identification has been saved in mother_vagrant_rsa.
Your public key has been saved in mother_vagrant_rsa.pub.

鍵ができました。公開鍵をコピーします。

macbook:.ssh akagire$ cat mother_vagrant_rsa.pub | pbcopy

iMacからvagrant sshしてauthorized_keysを編集

[vagrant@localhost ~]$ vi ~/.ssh/authorized_keys
# 略
# 行末にコピーした公開鍵を貼り付け
ssh-rsa AAAA...略... akagire@macbook.local

:w
:q

これで公開鍵の登録が終わったので、もういっちょSSHで繋いでみましょう

macbook:~ akagire$ ssh vagrant@192.168.1.16
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

はい、使う鍵を指定しましょう…。私はssh_configに書きました。

Host mother-vagrant
  HostName 192.168.1.16
  IdentityFile ~/.ssh/mother_vagrant_rsa
  User vagrant

もう一回トライ。

macbook:~ akagire$ ssh mother-vagrant
Last login: Fri Jan 26 07:42:56 2018 from 192.168.1.8
[vagrant@localhost ~]$ 

できました(゚∀゚)

気になる人は、vagrantでも環境変数の設定とかしたらいいと思います。私はしません。多分日本語ファイルを扱わないので。

これでようやくオフトゥンのなかで糞寒い部屋に置いてあるiMacへ自由につながりました。

4. ゲストOSのLaravelをMacbookでも見れるようにする

ゲストOSにIP割当されてるんだからとChromeのURLに192.168.1.16:8000に繋いだら接続が拒否されてしまいました…ってことでググる
imamotty.hatenablog.jp
なるほどこんなのわかるかよ(分かれよ)。ってことで

php artisan serve --host 0.0.0.0

無事、192.168.1.16:8000でアクセスできました。

これで動作確認もオフトゥンのなかでできるようになりました。あとはぬくぬくお勉強します。
さて、東北旅行のエントリーの続き…

それでは。