[PilotSSH] 使ってみたよ iPhone用の新発想のsshクライアント(その1)

2013/06/20iPhone, Linux

20130620-pilotSSH-2 PCが使えないところでサーバーの様子をちょっと見たい場合は、iPhoneのsshクライアントを使ってログインしていました。

でも、iPhoneの狭い画面にキーボードまで表示して あれこれ操作するのはものすごく面倒。楽にならんかなーと思っていたら、 Pilot SSH なるソフトが便利そうだという話が流れてきたのでさっそく試して大ハマリしました。

どんなアプリか?

サーバーの状態確認などの定型作業を簡単に実行するためのソフトです。

↓このようなメニューで作業します。
20130620-pilotSSH-4

なお、キーボードを使うような普通のsshログインはできないようですので、Remoter Pro (VNC, SSH & RDP)などは、お役御免にはなりません。

動作イメージ

サーバーログイン→indexコマンド実行→JSON形式でメニューを返す→iPhoneにてメニュー選択→再度サーバー側でコマンド実行→ JSON形式でメニューを返す… を繰り返します。 コマンドは Python や shell で書かれていますが、JSON形式を返せれば 何でも良さそう。

APIは “PilotSSH-scripts/API.md at master · Geal/PilotSSH-scripts · GitHub” にて公開されています。

ハマリポイント

現バージョンは CentOS ではそのままでは動きません。ファイルやディレクトリ構造からすると debian系が対象なのかもしれません。私は CentOSで動かすために苦労している途中。

debian系なら動くかどうかは私にはわかりません。苦労したくない人は まだ手を出さない方がいいと思う。

スクリプトは Python や shell で書かれていますので、自分で全部書き直すつもりでなければ、これらの言語が読めた方がいいです。

ダウンロード

便利そうなだけあって有料アプリです。iPhone版は450円。iPadでも動きました。

以下、設定の際にひっかかりそうなところを説明します。

秘密鍵・公開鍵の設定手順

鍵ペアを作る機能はありません。どこかで鍵ペアを作って、Pilot SSHに秘密鍵を読み込ませる必要があります。私は Linuxの OpenSSH で作成しました。

  • どこかで鍵のペアを作成する
  • 秘密鍵の拡張子を .rsa か .dsaにする(FAQ参照)
  • (You can add it through iTunes file sharing. You can also “open” files with .rsa or .dsa extension through Pilot SSH.)
  • iTunesを使って Pilot SSHアプリに転送する
  • 設定画面の Private Key をクリックするとファイルが選択できる
  • 公開鍵はログインするサーバーの ~/.ssh/Authorized_Keys に追加

20130620-pilotSSH-1

20130620-pilotSSH-3

サーバー側スクリプトの設定

設定完了後、サーバーにログインすると ~/.pilotssh にスクリプト基本的なスクリプトが作られます。 最初に .pilotssh/index を実行し、その結果をクライアントに返します。 デバッグの際はサーバー側でこれらのスクリプトを直接実行すれば良さそう。

$ find .pilotssh/
.pilotssh/
.pilotssh/power
.pilotssh/power/power_reboot.sh
.pilotssh/power/power_halt.sh
.pilotssh/power/power.sh
.pilotssh/logs
.pilotssh/logs/logs.sh
.pilotssh/logs/logs_show.sh
.pilotssh/apache
.pilotssh/apache/apache_remove_site.sh
.pilotssh/apache/apache_enable_site.sh
.pilotssh/apache/apache.sh
.pilotssh/echo
.pilotssh/echo/echo.sh
.pilotssh/index
.pilotssh/process
.pilotssh/process/process_kill.sh
.pilotssh/process/process_list.sh

GitHub のスクリプトに更新

Geal/PilotSSH-scripts · GitHub” に最新スクリプトがありますので、とりあえず更新しておきます。

開発者ブログにも “Update your scripts” と書かれてますし。

$ git clone https://github.com/Geal/PilotSSH-scripts.git
Initialized empty Git repository in /home/shin/tmp/PilotSSH-scripts/.git/
remote: Counting objects: 204, done.
remote: Compressing objects: 100% (106/106), done.
remote: Total 204 (delta 85), reused 199 (delta 81)
Receiving objects: 100% (204/204), 221.83 KiB | 103 KiB/s, done.
Resolving deltas: 100% (85/85), done.

$ cd PilotSSH-scripts/
$ ls
API.md LICENSE README.md apache dns echo img index logs network power process system wordpress

PilotSSH 以下のファイルで、 ~/.pilotssh を置き換えておきます。

root権限がないと動かないモジュール

sshでログインするサーバー側では PermitRootLogin No にして root ユーザーでの直接ログインを拒否し、root 権限が必要な場合は sudo を使うのが普通だと思います。

ところが、~/.pilotssh 以下のモジュールには root 権限が必要なものもちらほら。サーバー管理なんだから当然か。iPhone版では スクリプト実行時に sudoできるのですが、現在配布されているスクリプトは sudo対応していません。

sudoしたい場合は、スクリプトの書き換えが必要です。 書き換え方法は “Sudo support for iPhone version” にあります。

サーバー側にパッケージが不足

CentOS 6.4で動かしてるのですが、いくつかモジュールが足りませんでした。
例えば、network モジュールには python-netifaces が必要なため、当初は動きませんでしたが、yum install python-netifaces にて追加すれば OK でした。

動作確認してないっぽいスクリプト

system/system は " が閉じられていない部分があって動作しません。

ファイル構造が違うスクリプト

apache/apache は /etc/apache2/site-enabled や a2ensite, apache2ctl の存在が前提です。debian系Linuxのファイル構造っぽいです。

リンク

ここで力尽きましたので、続きはまた今度。動きさえすれば充分使えそうなのですが….

追記:続き書きました→ 「[PilotSSH] 使ってみたよ iPhone用の新発想のsshクライアント(その2)

iPhone, Linux

Posted by ず@沖縄