SSHとかよくわかってない


私は、ssh公開鍵暗号方式を利用する場合には、パスフレーズ無しにしてしまうことが多い。これはパスフレーズを入力するのが面倒くさいからに他ならない。

まあ、良い習慣ではないと思う。が、確かにパスフレーズを設定しておくよりも危険だとは思うが、秘密鍵を盗まれさえしなければ良いわけだし、この危険性は私は正しく理解できていると思う。

一つわからないのは、公開鍵を複数のホストで共有するのが良いのか悪いのか。コマンドラインからsshを叩くと、いちいち-iオプションで秘密鍵を設定しなくてはいけないが、これがすさまじくめんどくさい。ずっとめんどくさいと思いながら、やっちゃいけないかと思ってきたが、どうなのかわからなくなってきた。

まず危険性を考えよう。危険なのは、一つ秘密鍵を盗まれただけで、全ての対応する公開鍵を設定しているホストがのっとられること。これは、上の前提をよく考えると意味が無いことがわかる。だって、パスフレーズが空なんだから。一つの秘密鍵を盗まれて、他の秘密鍵が安全と言う状況は、考えにくいような気がする。

次に運用。sshにデフォルトの秘密鍵ファイルが設定されていることから、なんか大丈夫なような気がしないでもない。秘密鍵をホストごとに設定する運用を推奨するなら、秘密鍵の中にホスト名やユーザー名を記録しておいて、sshではそのファイルを指定して接続するようにするのが自然なような気がする。

だとすると、秘密鍵は共有しても大丈夫なんじゃないだろうか。もっとセキュリティを確保したい場合には、秘密鍵を分散させてパスフレーズも変えろ、ということじゃないかなあ・・・自信ないけど。

ということで、もう少し考えながら秘密鍵を共有してみることにしようと思う。適当に鍵のペアを交換するようにすれば、そこまで問題は無いんじゃないだろうか。

違う。いちいち秘密鍵を指定するのがめんどくさいなら、ssh_configに

IdentityFile ~/.ssh/id1
IdentityFile ~/.ssh/id2
IdentityFile ~/.ssh/id3

とか書いておけば良いみたい。こっちにしよう。パスフレーズの話はまた別。