背景

ものによるが、低スペックな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操作を要求するため結局なんらか手動操作が必要になる。