2011/11/12

TouchPad 買っちゃいました

#ssh-keygen -i -f をやってなくて躓いたのでまとめておく。

WebOSにrootでSSH接続

前提:無線LAN環境があってTouchPadがインターネットに繋がってること。
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆

まずはWebOS側でDevelopperModeに入る
画面上の検索欄にコナミコマンド入力 -> DevMode On
※upupdowndownleftrightleftrightbastart


操作端末側でターミナルソフト(NovaTerm)を導入
WebOS Doctor を途中まで進めるとインストールされる
http://www.webos-internals.org/wiki/Webos_Doctor_Versions

サービス:Palm Novacom を開始しておく(自動起動にしておく)
PCとTouchPadをUSBで接続※
C:\Program Files\Palm, Inc\terminal\novaterm.bat で起動

※USB Drive ModeにするとPCにマウントされてしまい
ターミナルから /media/internal が触れなくなる


OPTWareを導入
NovaTermでコンソールログイン。以下コマンドを実行
#wget http://bit.ly/preware-bootstrap
#sh preware-bootstrap

TouchPad側でインストールされてるPreWareを起動
(「DOWNLOADS」タブ内)

Available Packages -> Optware -> OpenSSH SFTP Server を入れる
※全部で6個ほど入れないとダメ的なことを言われるので
全部入れるのを選択(Install/Update them とか)


PCにSFTPクライアント(WinSCP)を導入
http://www.tab2.jp/~winscp/
からダウンロードしてインストール


公開鍵/秘密鍵を作る
インストールしたWinSCPのプログラムグループの中に
「鍵関連ツール」があるのでその中から Puttygen を起動。
・設定チェック SSH-2 RSA を選択、Number of bits は 1024
・Generate ボタンを押す(その後のマウスの動きから乱数を拾って
鍵を生成するので、マウスをぐりぐり動かす)
・生成が終わったら一応空欄になっている Key Passphrase も埋める。
(鍵+PWめんどくさかったらいらないかも)
・Save Public Key を押して公開鍵を保存(拡張子なし)
・Save Private Key を押して秘密鍵を保存(拡張子.ppk)
※公開鍵はサーバ側が保持、秘密鍵はクライアント側が持つもの


公開鍵をサーバ側(TouchPad側)に仕込む
TouchPadをUSB Drive Modeでマウント(表示が消えてたら繋ぎなおし)
PCからマウントされたドライブを開いて、ドライブ直下にさっき作った
公開鍵(拡張子なしの)を置く
PCからunmountする
※「ハードウェアの安全な取り外し」で「WebOS-Device」と
「リムーバブルディスク(*:)」が触れれば「リムーバブル」の方を
外すだけでいける。触れなかったら繋ぎなおしで。

PCにマウントしてドライブ直下に置いたファイルは、ドライブモードを
外してからターミナルソフトで見ると /media/internal/ に存在する。
まずは規定の公開鍵置き場が既に存在するかどうか確認。
なければ作る。公開鍵は「key」というファイル名と仮定。

NovaTerm で以下のコマンドを実行
#ls -la /var/home/root/

出力結果に .ssh があればよし。なければ以下のコマンドを実行
#mkdir /var/home/root/.ssh

念のため.ssh フォルダのパーミッションを明示的に指定
#chmod 700 /var/home/root/.ssh

この.sshディレクトリが規定の公開鍵置き場
(鍵のファイル名は authorized_keys)なので公開鍵をここに
規定の名前でコピー。※他の鍵も使う場合はCATで付け足す。
#cp /media/internal/key /var/home/root/.ssh/authorized_keys

コピーしたキーをssh2用に変換(?)
#ssh-keygen -i -f /var/home/root/.ssh/authorized_keys >> /var/home/root/.ssh/authorized_keys

※Windowsで鍵を作成すると、OpenSSHで認識できるように変換する
作業が必要となる。
-i は、暗号化されていない鍵ファイルを読み、OpenSSH 互換に変換。
-f [ファイル名] で、鍵を格納するファイル名を指定。

念のためauthorized_keys のパーミションを明示的に指定
#chmod 600 /var/home/root/.ssh/authorized_keys

再起動しておきましょう
#shutdown -r now


WinSCPでログインしてみる
PC側でWinSCPを起動して接続のための設定をする。
・Host name : WebOS の WiFi Preference で確認できるIPアドレス
・Port number : 22
・User name : root
・Password : 空欄
・Private key file : さっき作った秘密鍵(拡張子.ppk)ファイル
・File protocol : SFTP

ログインを押す。
鍵作成時にパスフレーズ設定してたらここでPWを聞かれるので入力。
つながる。


※たぶんミニーさんとこで見つけた方法は、SSHのインスコ時に
作ったユーザでSFTPに入る方法で、ここに書いたのはTouchPadが
最初から持ってる(Win的にいうとビルトインの)root の使う
鍵を自分で作ったものに差し替えてしまう方法、と理解してる。

===================================================
日本語環境移行(?)
繋がってしまうと不慣れなコンソールなんてあまり見たくもないので
今の内に以下コマンドを実行
#cd tmp
#wget http://mini.x0.com/webos/japanese2.sh
#sh japanese2.sh

ミニーさんというpalm~WebOS界の偉人によるスクリプトです。
・ロケール 日本語を追加した locale.txt を所定位置に上書きする
・リージョン mojoとmojo2両方のフレームワークに日本語リソース
フォルダを作り、そこへ datetime_table.json をコピーする。
・フォント Heisei Kaku Gothic のみ残し、それ以外の3つのファイルを
無効化します

※平成 角ゴが気に入らない場合は以下URLを参照して
好みのフォントに変更できます
http://mini.x0.com/2009/10/18/490/

/usr/share/fonts 内の平成 角ゴフォントの名前をリネームして、
好みのフォントのファイル名を平成 角ゴと同じにして置いてやる。
情報はPreのものなのでTouchPadだと若干ファイル名が違うかも。

◎+Aショートカットを変更する方法。(これもミニーさんのページから)
・WinSCPで書き換えるファイルをPCへ持って来ます
/usr/palm/frameworks/mojo/builtins/palmInitFramework200_18.js

・テキストエディタで、上記ファイルの該当部分を書き換える
・novaterm で以下コマンドを入力
#mount -o remount,rw /
#cd /usr/palm/frameworks/mojo/
#chmod 0777 builtins
#cd builtins
#mv palmInitFramework200_18.js palmInitFramework200_18.js$

・WinSCPで先のファイルを Pre へ書き戻す
・デバイスを再起動
・◎+A が ◎+Enter に変わる
※コマンドの意味を見る限り全部WinSCPで操作できる気がする
(が、やってない。おれpreじゃないので。)
===================================================
【追加情報】
novaterm で WebOS に繋いだらまず最初に下記コマンドを実行。
(システムファイルを読み書きする権限をつけるためのコマンド)
#mount -o remount,rw /

※うちは別に必要なかった。pre特有の情報なのか、母艦のログインアカウント権限なのか。。


【追加情報】
/etc/ssh/sshd_config がsshの設定ファイル。
#ServerKeyBits 768

ServerKeyBits 1024 ← 暗号強度を1024ビットにする。

※PuTTYからの接続時 Server refused our key エラーへの対処
※一般的なLinuxのページにあった。
自分にはこれも別にhitしてないけど念のため。