あっかぎのページ

iPhoneでSSH。Serverauditorを使って公開鍵認証もできるよ

20151113_4
(画像はクリックで拡大します)

iPhoneからSSHでリモートで制御するお話です。

iPhoneでSSH

「外出中にもサーバー操作がやりたいな」と思った事はありませんか? 今回はそんな時にiPhoneから(Android版もあり)からSSHでサーバー操作のできるアプリを紹介したいと思います。

20151113_2

ServerauditorはiアプリでSSHクライアントとして利用できるアプリです。すごいことに公開鍵認証も設定できます。

Serverauditorの特徴

  • SSHクライアントアプリ
  • 無料
  • 公開鍵認証に対応
  • iPhone/Androidどちらもあり

スマホからSSHでサーバーのコントロールができるので、外出中の緊急時にも対応できるすぐれものです。無料でも通常のSSHクライアントとして使えるのもうれしい点です(有料版はSFTPなどが利用可能)。

そして、個人的にServerauditorがおすすめできる点は、公開暗号鍵をアプリ単体で設定できる点です。iPhone(スマホ)利用を前提とする場合、ipアドレスがいろいろと変わるので、ipでログイン制限をやりにくいです。かといって、SSHでパスワード認証を残しておくとセキュリティー的にもイマイチです。そこで、公開鍵認証で決まったクライアントだけ通信が確立できるとセキュリティが高まります。

iPhone/Androidどちらもアプリが出ていますので、どちらのスマホユーザーでも使えるものいい点だと思います。

Serverauditorを使ってSSH

20151113_3

アプリを起動すると上のような画面になります。

一時接続したいときは一番上の『Quick Connect』、今後よく使うホストの場合は『Hosts』を選んで、接続するサーバーの設定をしていきます。ここでは『Hosts』を選んだとして進めていきます。

20151113_5

Hostsを選ぶと上の画像のように、登録したホストが出てきます(画面ではRaspberry Piとさくらサーバーが出ています)。新しいホスト(サーバー)を登録したい場合は、画面右上の□↑のアイコンをタップします。すると上の画像のようなメニューが出るので『New Host』を選んで新しいホストを登録していきます。

20151113_6 20151113_7

登録画面では主に次の項目を設定します。

  • Username
  • Hostname & Port
  • Password

普段SSHクライアントを使っている人なら難しい設定項目はないと思います。上の右画像は自宅のRaspberry Pi(debian)の設定を入力したものです。最低限の上の項目を入力すると、画面右上の『Save』が押せるようになります。設定内容に問題なければ『Save』をタップすると新しくホストが登録されます。

ホストの登録が完了すると『Hosts』メニューから先ほど登録したホストが選択できるようになりますので、それをタップして実際にSSHが接続できるかを確認します。設定に間違えがなければ、PCなどのSSHクライアントと同じようにサーバーに接続できると思います。

20151113_4
(SSH接続してコマンドを打った画面)

接続できるとそれ以降は通常のSSHクライアントとして操作できます。lsやviなどを使ったコマンドも問題なくできると思います。1つ注意事項として日本語表示(入力も)がうまくいきません。ただ、iPhoneやスマホからの緊急用のSSHクライアントと考えると、日本語関連はそれほど重要な機能ではないと思います。

普段からSSHクライアントを使っている人なら、アプリインストールからサーバー接続まで10分くらいでできるのではないでしょうか。とても簡単にiPhoneでSSHができるように作られていてすごいですね。

ぼくはこのServerauditorの肌色背景とこげ茶のテキストが好きで、PCのSSHクライアント(putty)も同じ色にパクらせてもらって使っています(^o^)

20150225_2
(PCのSSHクライアント(putty)も同じ色にしています)
http://akkagi.info/20151113_web/

Serverauditorで公開鍵認証

Serverauditorをおすすめした1番の理由は、無料のアプリ単体で『公開鍵認証』ができるからです。Serverauditorアプリ単体で暗号鍵を作って、サーバーへの設定(.ssh/authorized_keysへ公開鍵を追加)も行ってくれます。なので、別のFTPクライアントやscpなどを利用しなくても公開鍵認証ができるうれしい機能になっています。

20151113_3

暗号鍵の作成

公開鍵認証のやり方は、まず最初に暗号となる鍵のペアを作っていきます。操作としては、上のいちばん最初のメニュー画面の『Keychain』を選択していきます。

20151113_8 20151113_9

新しく暗号鍵を作成するために、左の画像の右上の□↑をタップします。するとメニューが開きますので、『New Key』を選択して暗号鍵を作る作業へ移っていきます。

暗号鍵を作成するのが右側の画像になります。デフォルトですでに暗号方式などが選択されています。『Key Name』には鍵を見分けるための名前を入力しておきます。他の項目についてはデフォルトのままOKです。設定が完了すると右上の『Save』をタップして暗号鍵を保存します。

公開鍵の登録

『Keychain』の画面に戻ると先ほど登録した暗号鍵が選べるようになります。

20151113_13 20151113_10

左の画面の登録した暗号鍵をタップすると、右の画面のような『Export To』というメニューになります。ここでは暗号鍵を設定したいサーバーを選択することになります。これから公開鍵認証をしたいサーバーを選択してタップします。

20151113_11 20151113_12

すでにサーバーの設定が完了していれば右上の『Export』をタップすることで、先ほどServerauditorで作った暗号鍵(公開鍵の方)がサーバーへアップロードされます。ここで見ておきたいのが『Export』の動作です。『Export Key』メニュー(画像一番右)の下にExportの動作が規定されています。

if test ! -e $1;
then mkdir $1;
chmod 700 $1;
fi
if test ! -e $1/$2;
then touch $1/$2;
chmod 600 $1/$2;
fi;
echo $3 >> $1/$2;

動作はシェルスクリプトで記述されていて、$1と$2はサーバー側アカウントのSSH暗号鍵の設定が入力されるようになっています。デフォルトではそれぞれ次のようになっています。

$1 = .ssh
$2 = authorized_keys

ちなみに、$3は暗号鍵のペアのうちの公開鍵が設定されています。公開鍵のフォルダやファイルがない場合は自動的にフォルダやファイルが作られます。すでにサーバー側のアカウントでsshの鍵を設定するフォルダやファイルが設定されていてデフォルト値と違う場合は、iPhone上で$1,$2を適宜変更してください。

一般に、ユーザー名がfooさんなら次のファイルに公開鍵が追記されていきます(/home/fooがホームフォルダの場合)。
/home/foo/.ssh/authorized_keys
Export動作では、上記の一般的な記述(ファイル)を期待して$1,$2のデフォルト値となっています。

『Export』動作が問題なければ、公開鍵のアップロード&設定が完了します。(この時点では公開鍵をサーバーに転送するために、サーバー側のSSHはパスワード認証などでログインできる必要があります)

以上で公開鍵認証の準備が完了しました。

公開鍵認証でSSH接続

20151113_14 20151113_15

続いて、公開鍵認証でSSH接続していきます。

まず、トップメニューの『Hosts』をタップします。そのままサーバーを選択すると今までの設定で接続しようとしてしまうので、まずは先ほどの暗号鍵で接続するように編集します。やり方はホスト(サーバー)名をスライドすると(右画面)、『Connect』『Edit』『Delete』が選べるようになります(ぼくはこのスライドでホスト設定の編集ができることに気付くまでにかなり時間がかかってしまいました)。

『Edit』から編集することで、左側の画面のようにホスト情報の編集ができるようになります。そこで中段の鍵マークをタップすると、先ほど登録した暗号鍵を選択して登録できるようになります。右上の『Save』をタップすることで編集が完了します。

これでSSH接続に公開鍵認証を使えるようになりました。『Hosts』メニューから先ほど編集したサーバーを選択すると、公開鍵認証でSSH接続ができると思います。

公開鍵認証で接続できるようになるとパスワードは不要になるので、設定で削除してもOKです。また、サーバー側のパスワードログインを禁止して、公開鍵認証のみで接続できるようにするとセキュリティがアップします。

ちなみに、Debianサーバーの場合はSSH設定で/etc/ssh/sshd_configのPasswordAuthenticationの部分をnoにすることでパスワードログインを禁止できます。(公開鍵認証などでログインできるようにしておかないと、設定に失敗すると再ログインできなくなるので要注意です)

$ sudo vi /etc/ssh/sshd_config

PasswordAuthentication no # yes->noにすることでパスワードログイン禁止

$ sudo service sshd restart

おわりに

ServerauditorのおかげでiPhoneから簡単にSSH接続ができます(公開鍵認証もOK)。外出先などでも万が一のトラブルに備えられるので、とても心強いですね。

さくらのVPSをお試しで借りてみたので、今ちょうどこのあたりの設定をいろいろと試しています。ある程度区切りが付いたら、そのあたりについても記事にしたいと思います。