puttyで公開鍵暗号を使ってユーザー名・パスワードを省略してログインする設定をした。

開発環境のsshするのに、毎回ユーザー名とパスワード入れるのも面倒だったので、鍵作りました。開発環境とはいえパスワード認証でsshするのもあまり良くないし。

鍵生成

$ pwd
/home/myuser
$ mkdir .ssh
$ chmod go-r .ssh/
$ cd .ssh/
$ ssh-keygen -b 2048 -t rsa -N '' -f work-rsa
Generating public/private rsa key pair.
Your identification has been saved in work-rsa.
Your public key has been saved in work-rsa.pub.
The key fingerprint is:
34:35:48:40:60:98:29:6d:9b:20:41:7d:be:9c:a5:0d myuser@localhost
$ ls work-rsa*
work-rsa  work-rsa.pub
$ cat work-rsa.pub > authorized_keys
$ chmod go-r authorized_keys

#鍵をダウンロード

$ rm work-rsa  work-rsa.pub
$ ls
authorized_keys
$ pwd
/home/myuser/.ssh
-t 暗号方式の指定RSAとDSAがあるけど、DSAは鍵長が1024ビット固定で短すぎるので今のところRSAがスタンダード。
-b 鍵長を指定する。後で調べたらRSAなら2048がデフォルト値だったみたい。
-N パスフレーズ。指定しなければ対話型で聞かれる。-N ''にするとパスフレーズ無しになる。
-f 生成する鍵のファイル名。指定しなければid_rsaid_rsa.pubが生成されます。

本当は、手元のクライアントで鍵生成するべきだけど、Windowsでやるの面倒だったので、開発環境で作ってからSCPでダウンロードしました。まぁ開発環境でしか使わない鍵だし。

puttyの設定

まず、putty付属のputtygen.extで秘密鍵を読み込んでから、秘密鍵の保存をします。puttyは鍵の形式が異なるので、これでputty用の秘密鍵*1になります。

接続 > SSH > 認証 > 認証パラメータ > 認証のためのプライベートキーファイル(K)

にさっき保存した.ppkファイルを指定します。

接続 > データ > ログインの詳細 > 自動ログインのユーザー名(U)

にユーザー名を入力しておくことで、接続時の入力を省略できます。パスフレーズ無しなので、これでputtyを起動してセッションを選ぶだけで、すぐに開発環境にログインできます。

関係無いけどLinux繋がりのついで

ホワイトスペースをユーザ名 or グループ名に含む場合のchown
$ chown myuser:domain\ users foo.txt

たぶんActiveDirectoryと繋がってるとかだと思いますがdomain usersというスペースが入ったグループでした。クォート系で囲むとかじゃなく、バックスラッシュでエスケープでした。

ドットファイルを一括でchmod
$ chmod u+w .*

*は、ドットで始まるファイル以外の、全てを指すワイルドカードで、ドットファイルの場合は.*で指定できる様です。

環境

Linux CentOS 5
putty ごった煮版 0.60-JP_Y-2007-08-06

*1:.ppkファイル