Linux
SSH
iOS
alpinelinux
iSH


概要

iPhone から SSH 接続はごく普通に行われるのに、その逆は滅多に行わないというのは不公平というものです。そこで、今回はこの偏りきった均衡を改善すべく iPhone SSH 接続する方法をご紹介したいと思います。現在手元で検証できる iOS マシンが iPhone しかないので確証はありませんが、他の iOS 搭載製品である iPad や iPod touch でも同じような手順でできると思います。


用意するもの


  • iOS を搭載したマシン

  • SSH クライアントが入ったマシン


手順

では早速やっていきましょう。


1. iSH Shell の導入

TestFlight の入った iOS 端末で https://testflight.apple.com/join/97i7KM8O にアクセスして、ベータアクセスの iSH Shell をインストールしてください。

TestFlight をまだ入れていない場合は、まず先に App Store で TestFlight をインストールしてください。


2. sshd の構成

先ほど導入した iSH Shell を開き、次のコマンドを入力します。

apk add curl openssh

ssh-keygen -A

ちなみにDocker を触ったことのある人ならわかると思いますが、中で使用されているのは Alpine Linux です。

次に公開鍵を登録します。私は次の手順を推奨しますが、メールからのコピペなどといった方法が楽であるという場合はそちらでも構いません。


公開鍵の登録

GitHub アカウントに SSH 公開鍵が登録された状態で iSH Shell を開き、次のコマンドを入力します。

ただし、文中の :username をあなたの GitHub ユーザー名に置き換えて下さい。

mkdir -p ~/.ssh

curl https://github.com/:username.keys > ~/.ssh/authrized_keys

GitHub アカウントにまだ SSH 公開鍵を登録していない場合は、先に https://github.com/settings/ssh/new を開いて公開鍵を登録して下さい。

GitHub アカウントがない場合は、まず最初に https://github.com/join を開いて GitHub アカウントを作成して下さい。


3. SSH 接続の受け入れ準備

iSH Shell を開き、次のコマンドを入力します。

/usr/sbin/sshd

そうしたら iOS の設定 App を開き、中にある Wi-Fi 項でチェックマークの入った行の (i) マークをタップし、その中に書かれた IP Address を脳内にメモします。

Wi-Fi に接続していない場合は、まず接続元となるマシンと同じ LAN 内にある Wi-Fi アクセスポイントに接続して下さい。


4. 実際に SSH 接続

SSH 接続を行う端末のシェルを開き、次のコマンドを入力します。

ただし、文中の :ip を先ほど脳内にメモした iOS 端末の IP アドレスに置き換えて下さい。

ssh -l root :ip

Are you sure you want to continue connecting (yes/no)? と出てきた場合は yes と入力して下さい。

正常に接続されれば、このような出力が得られます。

Welcome to Alpine!

You can install packages with: apk add <package>

You may change this message by editing /etc/motd.

端末名:~#

あとは煮るなり焼くなりお好きにどうぞ。お疲れ様でした。


結論

SSH 接続してから気づいたけど、繋いだところで何するの。