openstackのkey-pairをAuthorizedKeysCommandに利用する

どもっす。
夏休み2日目のP山です。

スクリーンショット 2015-08-09 18.04.36

以前LDAP周りのログイン調べてた時にうっかり気づいた、sshd_configAuthorizedKeysCommand
openstackのkey-pair(ユーザーに紐づくssh公開鍵)をそのまま使えたら便利じゃないのかということで
goで書いてみました。

使い方

まず/etc/ssh/openstack-ssh.confを作成してください。

 auth_url = "http://your-api-host:35357/v2.0"
 user = "your name"
 password = "your password"
 tenant = "your tenant"
 region = "your region"(default regionOne)

あとは/etc/ssh/sshd_configに下記を追加

RSAAuthentication no
PubkeyAuthentication yes 
AuthorizedKeysFile      .ssh/authorized_keys
AuthorizedKeysCommand  /path/to/openstack-ssh
AuthorizedKeysCommandUser nobody
ChallengeResponseAuthentication no
PasswordAuthentication no
PermitRootLogin no

ここまで設定を入れたら、あとはnovaにkey-pairを登録すればSSHログインできるようになります。

$ nova keypair-add --pub-key ~/.ssh/github_rsa.pub pyama
 $ ssh 192.168.70.11 -l pyama
Last login: Sun Aug  9 08:23:57 2015 from 192.168.70.1
[pyama@client ~]$ 

利用シーンとか

前提としてログインされるサーバ上にユーザーが存在することが必要になるため
sudo権限の管理とかグループ管理のことも考えるとldapと合わせて使うのが良さそうです。
LDAPのお手軽導入は以前エントリにまとめています。
黒川温泉産のLDAPサーバでSSH公開鍵認証する

参考にさせてもらったところ

始めてGo書いたので配布周りは@deeeetさんのリポジトリや、ブログが非常に参考になりました。

例外処理とかもうちょっと綺麗に書ける気がするので勉強します。

それでは皆様よい夏休みを!