身内が余ったOPPOで何かできないか探していたのでLinuxを布教すべく
適当に彼向けのHow toを書いて行きます。
今回はTermux内のOpenssh-serverのセットアップまでをしていきます。
LinuxとCUIを触れたことがない
慣れていない
そんな方を想定しています
目次
事前知識
- 手頃なAndroidスマホ
- Snapdragon845以上だと快適かも?
- ポート開放できる環境 or NAT超えできるサービス
- 他のプレイヤーが参加できるようにするには当然ですがポートを開ける必要があります。 TailscaleとかZerotierとか使えばポート開放環境がなくてもどうにかなります。~~Hamachi...?~~
- がんばる元気と根気
- サーバを運営していく以上Linuxの知識は最低限必要です。 頑張って覚えよう☆
- (推奨)PC
- やっぱりコマンドを打つならキーボードがなくては始まりません。
なくてもどうにかなるけど合ったほうが絶対にいい
必要なもの
必要なアプリ
-
Termux
サーバー本体をこのアプリを使って管理します。 -
Termux:boot
端末の再起動時とかにSSH(リモートアクセス)とかを有効化するのに必須 -
(推奨)hacker's keyboard
スマホ単体でコマンドを入力するときとかにあると便利
環境構築
Step1 必要なアプリのインストール
まず最初に、Termux本体のアプリ本体をダウンロードしましょう。
ダウンロード先
Githubの見方などはさすがに省略しますが、とりあえず一番上に近い"latest"
を選んでおけば大丈夫です。
末尾がgithub-debug_arm64-v8a.apk
となっているものをダウンロードしましょう。
記事執筆時点の最新バージョン(v0.118.1)ではtermux-app_v0.118.1+github-debug_arm64-v8a.apk
が適切なファイルになります。
ダウンロードができたらAPK(アプリ本体)をインストールしましょう。
手順については以下の記事にお任せします!
同様の手順でtermux:bootもインストールしましょう。
hacker's keyboardはあるとすごく楽です。F-Droidからダウンロードできます。
Step2 Termux&pkgのセットアップ
termuxはいわゆるターミナルエミュレーターです。
これを使ってサーバー本体とその実行環境を構築していきます。
これがtermux本体です
ランチャーによっては検索したほうが早いかもしれません。
個人的おすすめランチャー
Termuxを開くと、数秒の初期設定の後、このようなCUIが立ち上がると思います。
これがいわゆるCUIです。
ここから先の操作は、この画面上でコマンドを打ち込んでいく作業となります。
まずはじめに、パッケージマネージャーのパッケージリストをアップデートしましょう。
Termuxではpkg
というパッケージマネージャが採用されています。
そのため、pkg
のパッケージリストのアップデートをしましょう。
以下のコマンドをCUIに打ち込んだ後、Enter(改行)をしてみましょう。
$は基本的に入力しません!
CUIのお決まりだと思って、$(とそれより前の文字列)は無視しましょう。
$ pkg update && pkg upgrade
すると以下のようにログが流れると思います。
そして途中で以下のように質問され止まります。(容量によっては止まらないこともあります)
After this operation, [数字] kB disk space will be use.
Do you want to continue? [Y/n]
これの意味は
このソフトをインストールすると[数字]kbの容量を消費するけど、このまま続けて良い?
というような意味です。
[Y/n]
と聞かれているのでy/nで答えましょう。このケースでは承諾したいのでy
のちEnterを入れます。
Do you want to continue? [Y/n]
と言われたときは基本的になにか操作の承諾を求めています。
上に表示されている文章をよく読み、解答をy/nで考えましょう。
さらに幾つかの必須ツール/ソフト郡をインストールします。
以下のコマンドを実行しましょう。
$ pkg install vim screen proot-distro iproute2 openssh -y
解説
- pkg
- パッケージマネージャ本体
- install
- パッケージをインストール
- vim screen...
- vim screen...をインストール
- -y
- インストール時に確認を取らない
インストールが終了次第、このセクションは一区切りつきます。
Step3 Opensshのセットアップ
PCを使わない/持っていない場合はこのセクションはほぼ必要ありません。
SSHとは?
https://wa3.i-3-i.info/word11726.html
すごく簡単に言えばスマホをPCから遠隔操作(リモートアクセス)するのに使うものです。
これのサーバーをtermux側に入れ、PCから快適に操作できるようにしましょう。
セキュリティ的な観点からできる限り公開鍵認証を使うのが望ましいので、今回はその方法を解説します。
クライアント側の準備
まずはじめに、接続する側(クライアント)の秘密鍵/公開鍵を生成しましょう。
password認証でもssh接続は可能ですが、セキュリティ観点から
公開鍵認証を使うことを推奨します。
まず最初に、PCでcmd(コマンドプロンプト)を立ち上げます。
win + R
を押しファイル名を指定して実行
を開き、cmd
と打ちcmdを立ち上げましょう。
次回から、このcmdを使ってSSHを接続したりなどします。
立ち上げ方を覚えておきましょう。
では、秘密/公開鍵を実際に生成していきます。
cmdに
>ssh-keygen -t rsa -b 406
と入力しEnter
、聞かれた項目はとりあえずenterを押してスキップします。
すでに生成してある場合は上書きするかどうかここで聞かれます。
特別な事情がない限りすでにあるキーを使って問題ありません。
n
で上書きをキャンセルしましょう。
すべて飛ばすと、以下のようなログが出ると思います。
C:\>ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\hoge/.ssh/id_rsa):
Created directory 'C:\\Users\\hoge/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\hoge/.ssh/id_rsa
Your public key has been saved in C:\Users\hoge/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:5ZDcIakna/hoggehogepiypiyo hoge@2411
The key's randomart image is:
+---[RSA 4096]----+
| ... |
| ..+ . |
| .+ o |
| . o .+ |
| . . + +S . |
|. + + + . |
| o = @ + . |
| *oO.#.o |
| .*B#EBo |
+----[SHA256]-----+
C:\>
これで実際に鍵が生成されました。
クライアント側の準備はこれでほぼ完了です。
蛇足
%userprofile%\.ssh
サーバー側の準備
先ほど作ったtermux環境でopensshサーバーを立ち上げ、実際に接続をしてみましょう。
環境確認&一時的なパスワード認証の有効化
まずsshによる通信をするには、以下の用件を満たす必要があります。
- サーバーとクライアントが直接接続できること
- クライアントがサーバーに登録されたの認証情報を持っていること
- サーバ側でsshサーバーが稼働していること
順番に見ていきます。
- サーバーとクライアントが直接接続できること
これは、ipアドレスによるダイレクトアクセス(もしくはポート単位でのダイレクトアクセス)が存在する、
もしくは同じネットーワークに属していることが必要です。
同じLAN内でも中継機などにより多重ルーター化しており、直接接続できないことがあるのでチェックしましょう。
例: 192.168.0.5
と192.168.0.8
は直接通信できますが、192.168.0.5
と192.168.1.8
は直接通できません!
基本的にクライアントからサーバーへpingがきちんと通れば問題ないと思います。
2.クライアントがサーバーに登録されたの認証情報を持っていること
要はサーバー側に登録された公開鍵やサーバのパスワードを知らないとログインできない
そういうことです。
3 サーバー側でsshサーバーが稼働していること
ssh接続はosが標準で有効にしているケースだけでなく、ユーザが自分で有効化(インストールも)しなくてはならないこともあり、今回はそのケースです。
そのため、sshサーバーの設定などをここから行っていきます。
IPアドレスの確認
まず最初に、サーバ(Android)側のIPアドレスを調べましょう。
設定画面から見ることもできますが、今回はTermuxを使って調べます。
以下のコマンドをtermuxで実行してください。
$ ip a
すると結果が以下のように表示されます。
~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 06:10:42:dc:7a:dc brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 46:f3:eb:33:2d:40 brd ff:ff:ff:ff:ff:ff
inet6 fe80::44f3:ebff:fe33:2d40/64 scope link
valid_lft forever preferred_lft forever
...
9: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP,40000000> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether de:6a:7c:d2:52:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.15.22/24 brd 192.168.15.255 scope global wlan0
valid_lft forever preferred_lft forever
inet6 fe80::dc6a:7cff:fed2:52aa/64 scope link
valid_lft forever preferred_lft forever
たくさんデバイスが出てくると思いますが、見るべきはwlan0のipアドレス(192.168.x.x)です。
これが本体のIPアドレスとなります。
これをメモするなり覚えておきましょう。後で使います。
有線接続などの特殊な場合はインターフェイス名(この場合はwlan0)は変わることがあります。
IPアドレスで判断しましょう。
蛇足2
重要な情報だけ絞り込み
$ ip a | grep 192
「|」はパイプという特殊文字なので注意!やるならコピペ推奨
パスワードの書き換え
termuxは初期状態ではアカウントにパスワードが設定されていません。
そのため、最初のsshログインのために自分で一時的なパスワードを設定する必要があります(公開鍵を何らかの方法で飛ばせるならこの限りではない)
では設定していきましょう。
termuxで以下のコマンドを入力してください。
passwd
passwordじゃなくてpasswdだぞ
多分New password:
って聞かれると思うので、とりあえずのパスワードを設定しましょう。
この時、文字を入力しても画面には表示されないことにお気をつけあれ。変化がなくても基本的には入力されています。
Retype New password
ってのはいわゆるパスワード確認です。もう一度打ちましょう。
正常に設定できればログが以下のようになるはずです。
~ $ passwd
New password:
Retype new password:
New password was successfully set.
これでパスワードの設定は完了です。
SSHサーバの起動
これはかなり簡単。termuxでsshd
と打ちましょう。何も表示されませんがサーバは稼働しています。
SSH接続
これにて準備はすべて整いました。実際にsshを繋いで見ましょう。
cmdで以下のコマンドを実行してください
先ほどip a
して出てきたIPアドレスを使います。
ssh hoge@[さっきのipアドレス] -p 8022
解説
- ssh
-
ssh接続するよ!ってことです。
ssh.exeをダブクリするみたいなもん - hoge@ipあどれす
-
接続先のユーザー@ipアドレス
といった構成になっています。
Termuxの使用上ユーザはなんでもいいのでとりあえず適当に指定しました。 - -p 8022
-
ポート8022をつかって通信するよ!ってこと
termuxのopensshの初期ポートは8022です。
うまいこといけば
The authenticity of host '例のIP (例のip)' can't be established.
ED25519 key fingerprint is SHA256hofgehoge.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
解説
こいつ初めて会ったサーバーだけどほんとに繋いでダイジョブそ?
ってことを言われてます。
初回接続はすべてこうなるので、違和感がない限りyesって言っておけばおk
とか聞かれるはずなので、とりあえずyes
って打っておきましょう。
これで
Welcome to Termux!
Community forum: https://termux.com/community
Gitter chat: https://gitter.im/termux/termux
IRC channel: #termux on libera.chat
Working with packages:
* Search packages: pkg search <query>
* Install a package: pkg install <package>
* Upgrade packages: pkg upgrade
Subscribing to additional repositories:
* Root: pkg install root-repo
* X11: pkg install x11-repo
Report issues at https://termux.com/issues
~ $
とか言われれば正常にsshがひとまずは接続できています。お疲れ様でした。
公開鍵認証への切り替え
ここからパスワード認証よりよい安全な公開鍵認証に切り替えていきます。
まずは、クライアント側の公開鍵のファイルを引っ張り出しましょう。
開き方
ここに入っているid_rsa.pub
をメモ帳当たりで開きます。
開けたらそのウィンドウは一旦最小化しておきましょう。後で使います。
id_rsa
は秘密鍵本体で、これが流出すると自分の鍵を使って不正アクセスが可能になります。(合鍵なので)
開くのはid_rsa.pub
です。
次に、今開いているsshセッションを使い、実際に公開鍵を登録して行きます。
重要
ここから、linuxの基礎的な移動コマンド(cd,ls,pwdなど)をたくさん活用します。
これらに関する最低限の知識がないと、この先詰まる可能性が高いです。
これに関しては以下の記事にお任せします!
では次に、termux内に新しく.ssh
ディレクトリを作成し、移動します。`
$ mkdir .ssh && cd .ssh
作成したら、なかに公開鍵を入れるためのテンプレートを書いていきましょう。
以下のコマンドを入力してください。
まだ実行(Enter)は切らないでください!!!
$ echo "" >> authorized_keys
入力が終わったら、この""
の中にさっきメモ帳で開いたid_rsa.pub
の中身を丸ごと貼り付けます。
改行などあると問題になるので変更を加えずにコピーした後、十字キーを使い""
の間にカーソルを動かし、右クリック
します。
すると以下のように公開鍵が貼り付けられると思います。
~/.ssh $ echo "ssh-rsa AAAAB3NzaC1yc2E(省略)YOCunz hoge@hogepc" >> authorized_keys
この状態になったらEnterを切ります。
次に、いくつか権限の修正が必要になるため、以下のコマンドを実行しましょう。
chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh
次に、正常に公開鍵が登録されたかデバッグするために、実際に接続を試行してみます。
一旦sshセッションを
exit
コマンドで切断します。
次に、もう一度接続します。
間違ってcmdを閉じていなければ、十字上でログを呼び出し、そのままEnterで接続できるはずです。
この時、パスワードが要求されなければ公開鍵が正常に登録できています。
パスワード認証の切り離し
正常であれば公開鍵認証が使えるようになったはずなので、パスワード認証を切ってしましましょう。
以下のコマンドでパスワード認証を無効化できます。
sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' ~/../usr/etc/ssh/sshd_config
これで公開鍵認証への切り替えは完了です。お疲れ様でした。
なお実際の切り替えの反映はtermuxを再起動した後の次のsshd
から有効になります
頃合いをみて再起動しましょう。
お疲れ様でした。 以上で、termuxでssh環境を構築するまでの流れは完了となります。
次回は*proot-distroのセットアップ&ubuntuのインストール*をしていきます。
次回→TODO