iPhone Tips/OpenSSH

出典: Fukudat.com

iPhoneにネットワーク越しにログインすることを可能にする.

1 パスワードの変更

ssh とは本来関係ないけど,これを行わずに OpenSSH をインストールするとすぐにウィルス(正しくはワームだけど)に感染します.

jailbreakした直後の root および mobile のパスワードは "alpine". このままだとセキュリティー上問題なので,適当なパスワードに変更する.PCから

$ ssh root@iphone.fukudat.com
Password: alpine
iPhone:~ root# passwd 
Changing password for root.
New password: xxxxx
Retype new password: xxxxx
iPhone:~ root# passwd mobile
Changing password for mobile.
New password: xxxxx
Retype new password: xxxxx
iPhone:~ root# exit
ただし,ここでiphone.fukudat.com は iphone のホスト名

とでもすればよい.

2 パスワードなしでのログイン

~root/.ssh にパブリックキーを置く.PCから

$ ssh root@iphone.fukudat.com "mkdir .ssh; chmod 500 .ssh"
$ scp .ssh/id_dsa.pub root@iphone.fukudat.com:.ssh/authorized_keys2
$ ssh root@iphone.fukudat.com "chmod 400 .ssh/authorized_keys2"

とでもすればいいか.mobile でも同様にしておくとよいかも.(root を mobile に代えて,上を実行)

パーミッションに注意.要するに,本人以外が

  • ~/.ssh を読めてはいけない
  • ~ に書きこめてはいけない

3 パスワードでのログインを禁止する

OpenSSHを動かしていると,外部から侵入しようと攻撃をうける可能性がある.パスワードを分かりにくいものに変更していても,絶対安全とは言えない.このため上記のように証明書でのログインの設定したうえで,rootのログインとパスワードでのログインを禁止しておく.今後自分が使うときは,証明書 (id_dsa) があるPCからmobileユーザでログインする.

iPhoneにログインして,/etc/ssh/sshd_config (ssh_configではないので注意) を編集して,以下の行を加える.

PermitRootLogin no
PasswordAuthentication no

これで root でログインすることができなくなるとともに,パスワードでのログインができなくなる。 この設定後ログオフするまえに,OpenSSHを再起動して,別の端末からちゃんと証明書を使ってログインできるかどうか確かめておくとよい. (設定を間違えるとMobileTerminalから直さなければならなくなるので)

なお,この変更はOpenSSHを再インストールすると無効になる.