Windows から Chromebook の Linux に ssh でアクセスする方法

技術的な小ネタ

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 できるツールを使用することを前提とします。

https://ja.osdn.net/projects/ttssh2/

sshの方法

sshの方法は、公開鍵暗号方式で接続する常識的だとは思いますが、今回は簡単のためにパスワード認証でsshすることとします。

手順

chrombook 側の準備

前提知識について

(とりあえずここは飛ばしてもらって大丈夫です。自分用のメモみたいなものです)

ややこしいのですが、Chromebook 内の Linux はコンテナで動いています。
いったんコンテナについては触れませんが、要はChromebook内のLinuxは、Chromebookの中で仮想的に動いているので、そのままだと外部からはアクセスできない(外部からは見えない)ということです。

なので、外部からアクセスできるようにポートフォワードして指定したポートはそのままコンテナ内のLinuxへ繋がるように設定します。

Linux コンテナ内の設定

sshのポート設定とsshサーバーの起動

Chromebook 内の Linux には、sshでアクセスできるように最初からsshサーバーの用意自体はされているそうなのですが、デフォルトでは起動していません。
(この点の詳しい経緯についてはこちらのブログに書かれていましたので気になる人は参考にしてみてください)

以下、Linux内にて実行します。

  1. sshのポート番号を設定する

sudo vi /etc/ssh/sshd_config でファイルを引き、以下の通りに変更します。

- #Port 22
+ Port 22222
+ PubkeyAuthentication no
+ PasswordAuthentication yes
+ ChallengeResponseAuthentication no
+ PermitRootLogin no

ここで重要なのが、ポート番号は1024以上で2222以外ということらしいです。

  1. sshd を使用可能にする

以下のファイルがあると、sshd できないらしいので削除します。削除怖いのでリネームにしました。

$ sudo mv /etc/ssh/sshd_not_to_be_run /etc/ssh/sshd_not_to_be_run.bak
  1. 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アドレスを固定する方法があります。(これについてはここでは触れません)

コメント

タイトルとURLをコピーしました