Chromebook → Windows へリモートデスクトップする方法については情報があふれているのですが、
Windows → Chromebook の方向へのリモートアクセスについてはあまり情報がありません。
本来ならば Windows → Chromebook へリモートデスクトップアクセスしたいのですが、仕様なのか?「リモートサポート」とかいう時間制限付きでかつ毎回PINを入力しないといけない面倒くさいやり方でないと接続できません。
とりあえず自分がやりたいこととしては、家の中で1階から2階にあるChromebook内のLinuxコンテナにアクセスすることだったので、素直に Windows PC から ssh で Chromebook にアクセスする方法を選択することにしました(これだったら時間制限とかなくせるので)。
しかし、これがまたググって出てくる情報をそのまま試してもうまくいきませんでした。
ググって上位に出てくる記事は、何かしらプロ向けの記事が多く、その方たちにとっては当たり前のことが省略されていたりするため、参考にさせてもらいましたがかなり苦戦しました。
なので、改めて自分みたいな素人でも ssh できるように備忘録しておきます。
前提
Chromebook 内の Linux の起動について
Chromebook にてLinuxが起動できていることを前提とします。(Linuxの起動方法についてはそれはそれで話が長くなるので)
sshツールについて
まず結論から書きますが、自分の環境ではWindowsのコマンドプロンプトやPowershellから ssh
コマンドを使用して chromebook へのアクセスはできませんでした。
以下のような結果になります。
>ssh -p 22222 -l hogehoge 192.168.0.18
hogehoge@192.168.0.18's password:
Last login: Sun Sep 11 12:55:42 2022 from 192.168.0.13
Failed to connect to bus: No such file or directory
理由は分かりません。Failed to connect to bus: No such file or directory
というエラーになっていますが、ググってもめぼしい情報は得られませんでした。
詳しいことは口述しますが、とりあえず自分の環境ではコマンドプロンプトのsshは使用できなかったということです。
なので、今回は前提として TeraTerm という ssh できるツールを使用することを前提とします。
sshの方法
sshの方法は、公開鍵暗号方式で接続する常識的だとは思いますが、今回は簡単のためにパスワード認証でsshすることとします。
手順
chrombook 側の準備
前提知識について
(とりあえずここは飛ばしてもらって大丈夫です。自分用のメモみたいなものです)
ややこしいのですが、Chromebook 内の Linux はコンテナで動いています。
いったんコンテナについては触れませんが、要はChromebook内のLinuxは、Chromebookの中で仮想的に動いているので、そのままだと外部からはアクセスできない(外部からは見えない)ということです。
なので、外部からアクセスできるようにポートフォワードして指定したポートはそのままコンテナ内のLinuxへ繋がるように設定します。
Linux コンテナ内の設定
sshのポート設定とsshサーバーの起動
Chromebook 内の Linux には、sshでアクセスできるように最初からsshサーバーの用意自体はされているそうなのですが、デフォルトでは起動していません。
(この点の詳しい経緯についてはこちらのブログに書かれていましたので気になる人は参考にしてみてください)
以下、Linux内にて実行します。
- sshのポート番号を設定する
sudo vi /etc/ssh/sshd_config
でファイルを引き、以下の通りに変更します。
- #Port 22
+ Port 22222
+ PubkeyAuthentication no
+ PasswordAuthentication yes
+ ChallengeResponseAuthentication no
+ PermitRootLogin no
ここで重要なのが、ポート番号は1024以上で2222以外ということらしいです。
- sshd を使用可能にする
以下のファイルがあると、sshd できないらしいので削除します。削除怖いのでリネームにしました。
$ sudo mv /etc/ssh/sshd_not_to_be_run /etc/ssh/sshd_not_to_be_run.bak
- sshd サーバーを起動する
$ sudo systemctl restart sshd
以下で正しく起動しいているか確認できる。
$ sudo systemctl status sshd
● ssh.service - OpenBSD Secure Shell server # ←これが出てたらOK
.....
パスワードの設定
パスワード認証でssh接続するために、ログインユーザーのパスワードを設定する必要があります。デフォルトではパスワードが設定されていないので、以下の手順でパスワードを設定します。
Linux内にて以下を実行します。
$ sudo passwd <ユーザー名>
New password:
Retype new password:
passwd: password updated successfully
Chromebook の設定
ポート転送設定
ここからは Chromebook の 設定画面で設定します。
「追加」にてポート番号を入力後、トグルボタンをONします。
IPアドレスの確認
sshでホスト名で接続してもいいのですが、Chromebookのホスト名がわからないので、IPアドレスを使用します。
注意:コンテナ内のLinuxのホスト名(Penguin)ではアクセスできません。何かしら方法があるのかもしれませんが、普通に考えたらコンテナ内のホスト名はWindowsからは見えませんので注意が必要です。
以下の通り、設定画面からたどっていくことでChromebookのIPアドレスを確認できます。
以上で、Chromebook側の設定はOKのはずです。
Windows 側の設定
Teraterm の起動
Teratermを起動し、下記のようにChromebookのIPアドレスとsshで使用することにしたポート番号を入力します。
うまくいくと、下のような画面が出ます。
ユーザー名には、コンテナ内のLinuxのユーザー名(xxxxx@penguinのxxxxxに該当)と、登録したパスワードを入力します。
これで OK ボタンで ssh 接続することができました!
注意事項
起動時に毎回やる儀式
今回の方法でWindowsからChromebook内のLinuxにsshできるが、Chromebookが再起動するたびに以下の儀式を手作業でやらないといけない。めんどうだけど、改善するのは難しそう・・・
- Linuxコンテナの起動
- Chromebook で、手作業でターミナルを立ち上げてコンテナを起動させる必要がある
- ポート転送設定
- トグルボタンを手作業でonする必要がある
IPアドレス
大体の場合、家のルーター内でWindows→Chromebookアクセスとなると思いますが、DHCPにより動的にIPアドレスが割り当てられるため、毎回ChromebookのIPアドレスを確認する必要があります。
これが面倒な場合は、ルーター側でMACアドレスを指定してIPアドレスを固定する方法があります。(これについてはここでは触れません)
コメント