れんとう

まいにち なにか ひとつ

自分に都合の良い謎理論は構築して言い訳にしない 〜鍵束を書き換える〜

ログインできないし…

おうちサーバー群へのsshログインを「鍵認証」に切り替えている。

  • クライアント側でssh-keygen
  • 公開鍵(id_rsa.pub)をサーバーの.sshにコピる
  • サーバーの鍵束に登録する(cat id_rsa.pub >> authorized_keys)
  • /etc/ssh/sshd_configでパラメーターを設定

こんな簡単に鍵認証にするのも、メインマシンがOS Xだからなわけで。

シームレスにUNIXと接続できるクライアントPCとしてのMacは高く評価してるよ!

Windowsの頃は、cygwinを入れt(長くなるので割愛

 

なんだがね、やっぱり、Windowsは鬼子だなと思うんだよなぁ。

Windowsにはsshコマンドが標準搭載されていないので

(注)最近は純正sshとかLinuxアプリの整備とか進んでるようです。

(注)それはまた、別の機会に。

どうしても、sshクライアントからのログインになってしまう。

鍵もsshクライアントで使わないとだから、ssh-keydenコマンドを気軽に打てない。

というわけで、長いことPuTTYを愛用してるのだ。

PuTTYにはPuttygenという認証鍵ツールが付いているので、それで鍵を作って、公開鍵をサーバーにアップするのだが…同じ鍵を使ってるのに、サーバーA(ScientificLinux)にはログインできる、サーバーB(OpenBSD)にはログインできないという事例が発生する。

なんでだろ?

科学とは「自分に都合の良い謎理論を立てないこと!」

OpenBSDはセキュリティが強固だっていうからなぁ、Windowsのクライアントで作った鍵の場合は、何か制限があるのかなぁ」とか、謎の理論を構築すること30秒。

いかんいかん!それは、仕事のできない人の発想だ!

自分に都合のより謎理論 = 他人のせい

にしては物事は解決しない。

ということで、ちゃんとした理屈を構築してみることにした。

正常にログインできているサーバーA(ScientificLinux)で、

cat .ssh/authorized_keys してみる。

 

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAq/gO3BA78bK2cce1BlSO4znXyT1a5+ZmguKfxVJSuoywQQXBjw5BZc1tM2uGqYzJ9ZKbgguOsisSLeHKFJZMxkbKsIR5kY/kyj/8KgoI/3N0b8BYkrkWTK2MRZYPd7FOOa6oYfvRlhbiEr1zTOf8cdsOgEKMQZOL/vwjZMqKk7s=

---- BEGIN SSH2 PUBLIC KEY ----

Comment: "rsa-key-20140124"

AAAAB3NzaC1yc2EAAAABJQAAAIEAq/gO3BA78bK2cce1BlSO4znXyT1a5+ZmguKf

xVJSuoywQQXBjw5BZc1tM2uGqYzJ9ZKbgguOsisSLeHKFJZMxkbKsIR5kY/kyj/8

KgoI/3N0b8BYkrkWTK2MRZYPd7FOOa6oYfvRlhbiEr1zTOf8cdsOgEKMQZOL/vwj

ZMqKk7s=

---- END SSH2 PUBLIC KEY ----

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArrePGSahAsMw4NICX48anLCCTHXILqHF2J+ydXe7Bu79aVUcJN6VkfzG6zpyiC0X7Lmapijcz/YhFuT35tfnio8Pvnwrie9gQmJPYRdQDaQ5a/CMCXWgQMy/9VhFd5lobCoBQvjQMIvdCR28Ej+Xqq1sWq0bBlb0I0tXLCCuMNnOSHDxizWIfChix2dM5TN0yX4ROs0LWcyDMRrzy4i32gbplgKnQqM9u2sNNTwIh0HSKE761DR+LBYnzcXyBGBDgJfpHxYjVPfdWfLwtJaSdheJEO2HeB0vfBizhISbUhUqgcfQLJIlvt815MTNDujPdTC62Xa68+eS0Eu8VuUVMQ== hoge@hogehoge.jp

 

上記はその抜粋。

3つの公開鍵が登録されてる。

上から、

1番目はどこの鍵だろう?ま、いっか。

2番目、BEGIN SSH2 PUBLIC KEY はこれは、Windowsで作ったやつだな。

3番目は、OS X で作ったやつ。

2番目と3番目であきらかにフォーマットが違うがこれが原因?

OSは違えどSSHプロトコルは同じなんだから、フォーマットの違いが影響するとも思えない。なぜだろう。

じっと見つめること、30分。気が付いた。

あれ?よくみると、1番目と2番目って、1行にまとまってるだけで書いてあること同じじゃね?ってことは、もしかして、以前、同じことで悩んだりしてる?

ということで、そこを直してみた。1番目と2番目が同じなんだから、2番目を綺麗に削除してみよう。

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAq/gO3BA78bK2cce1BlSO4znXyT1a5+ZmguKfxVJSuoywQQXBjw5BZc1tM2uGqYzJ9ZKbgguOsisSLeHKFJZMxkbKsIR5kY/kyj/8KgoI/3N0b8BYkrkWTK2MRZYPd7FOOa6oYfvRlhbiEr1zTOf8cdsOgEKMQZOL/vwjZMqKk7s=

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArrePGSahAsMw4NICX48anLCCTHXILqHF2J+ydXe7Bu79aVUcJN6VkfzG6zpyiC0X7Lmapijcz/YhFuT35tfnio8Pvnwrie9gQmJPYRdQDaQ5a/CMCXWgQMy/9VhFd5lobCoBQvjQMIvdCR28Ej+Xqq1sWq0bBlb0I0tXLCCuMNnOSHDxizWIfChix2dM5TN0yX4ROs0LWcyDMRrzy4i32gbplgKnQqM9u2sNNTwIh0HSKE761DR+LBYnzcXyBGBDgJfpHxYjVPfdWfLwtJaSdheJEO2HeB0vfBizhISbUhUqgcfQLJIlvt815MTNDujPdTC62Xa68+eS0Eu8VuUVMQ== hoge@hogehoge.jp

で、SSHしてみると…できた!

無事ログインできました。

ってことは、サーバーB(OpenBSD)も同じようなフォーマットにしてやれば…できた!

正しい解

OpenBSDはセキュリティが強固だからWindowsで作った鍵じゃ認証できない」という都合のより謎理論は、やはり成立しなかった。

「公開鍵のフォーマット間違えて登録してました。テヘペロ。」というなんとも恥ずかしいオチでしたとさ。

公開鍵のフォーマットには

OpenSSH形式とSECSH形式があるらしい。

元祖SSHはSECSH形式で、SSHを元に開発されたOpenSSHはOpenSSH形式らしい。

Windowsだからの形式ではなく、きっと、当時、SECSH形式で自分で作ったんだろうなと推測してる。

元祖SSHは触ったことがないから知らなかったよ(恥

言い訳しないで前に進もう

もしも、だ。

OpenBSDはセキュリティが強固だからWindowsで作った鍵じゃ認証できないですね…別にUNIXマシーンで作成した鍵を取ってきて使いましょうよ!」

なんて、言ってしまったら、最悪だ。

なぜかって?

自分が知らないことで、できないことを、さもそれっぽく、誤魔化しているからだ。

知らない人が相手なら騙せるだろう。しかし、知ってる人に言ってしまったらどうなる?あ、こいつ、ダメだな、言い訳してる、とあっさり切られてしまう。

こういう設定ひとつでも、そういうところって出てくるので、怖いと思ったのでした。

ちゃんちゃん。