背景
ものによるが、低スペックなChromebook上で開発とかしたくない。外部からChromebook上のLinuxコンテナにSSHログインしたい。
初期状態
ChromeOSの初期状態から普通にセットアップをすませておく。
IPアドレスの固定
設定画面でネットワークで(i)マークからMACアドレスをメモしておく。 お使いのDHCPサーバの設定でMACアドレスに固定アドレスを振っておく。 Chromebookを再起動する。
Linuxコンテナの導入
設定画面の検索欄でlinuxを指定してlinuxコンテナを入れる
Linuxパッケージの更新
ターミナル上で以下のコマンドを順に実行する。
sudo apt update
sudo apt dist-upgrade
sudo apt install emacs-nox
エディタは何でもいいが今回はemacs-noxにした。
ホスト名の変更
外部からアクセスするホストなのだから名前は変えたいだろう。 今回は penguinからspin11に変更する。
/etc/hosts と /etc/hostname 中の penguin という文字列を書き換えること。 その後に hostname コマンドを実行すること。
sudo emacs /etc/hosts
sudo emacs /etc/hostname
sudo hostname spin11
SSHサーバ
最初からポート2222で動いてるが、その設定ファイル /dev/.ssh/sshd_config はリードオンリーなファイルシステムにマウントされてて編集できない。こっちはChromeOSとの間でSFTPするためだけのものらしい。
1024以上で2222以外のポートで別のsshdを動かす。今回はポート2223にしてみた。
ターミナルで subo emacs /etc/ssh/sshd_config して以下の項目を指定する
Port 2223
PasswordAuthentication no
PermitRootLogin no
起動を阻害するファイルを削除する。
sudo rm /etc/ssh/sshd_not_to_be_run
起動する。
sudo systemctl start ssh
sudo systemctl enable ssh
起動できてるか確認する。
sudo netstat -ntlap
ChromeOSの設定画面でlinuxのポート転送2223を追加する。
ログインユーザのSSH公開鍵
最後にログインユーザの ~/.ssh に公開鍵を置く。
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ファイルアプリで ~/.ssh/authorized_keys を開いて公開鍵を普段どおりに書く。
動作確認
SSHクライアント側からログインできるか試す。
再起動ごとにやること
- ターミナルを開くなどしてLinuxコンテナを起動する。
- ChromeOSの設定画面でlinuxのポート転送2223を有効にする。
なおコンテナの自動起動を完全無操作で行う方法は存在しない。開発者モードを使えばできるが、開発者モード自体がCTRL-D操作を要求するため結局なんらか手動操作が必要になる。