きまブログ

5/31 はてなダイアリーから移行しました。


ubuntuで、パスワードなしでsshログインしたい - 鍵の登録編

前回記事の続きです。
ubuntuで、パスワードなしでsshログインしたい - ホスト認証編 - きまブログ
ubuntuで、パスワードなしでsshログインしたい - 鍵を作る。 - きまブログ

最終段階です。
sshサーバ側に、sshクライアントから、公開鍵を登録します。

環境

ubuntu14.04 LTS on VirtualBox 4.3

  • SSHサーバー:ubuntu14.04 (ubuntu14server)
  • SSHクライアント:ubuntu14.04 (ubuntu14client)
鍵の登録 - authorized_keys

パスワードなしでリモートホストにログインするための、
ざっくりした仕組みは、

リモートホストのログインしたいのアカウントの~/.ssh/authorized_keys ファイルに、
ローカルホストにある自分のアカウントの公開鍵~/.ssh/id_rsa.pub(の内容)が登録されていれば、
パスワードがなくても、ログインできる。

ということ。

つまり、相手が自分の公開鍵で暗号化した通信内容を、
自分しか持ってない秘密鍵で復号化できれば合格。ということだろう。。

今までは、scpでid_rsa.pubをリモートへコピーして、
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
みたいな事をしてました。
一歩間違えると一大事な作業です。

しかし、最近いいコマンドがあることに気が付きました。
いまさら。。

ログイン先のリモートホストに公開鍵を転送する。

コマンドは、ssh-copy-id です。
これをすると、ローカルホストの~/.ssh/id_rsa.pub を、
リモートホストの~/.ssh/authorized_keys に追加してくれます。

kima@ubuntu14kima2:~$ ssh-copy-id kima@192.168.179.3
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
kima@192.168.179.3's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'kima@192.168.179.3'"
and check to make sure that only the key(s) you wanted were added.

これで、リモートへsshでアクセスするだけで、
ユーザー名&パスワードが求められることなくリモートへログインできます。

と思ったら、ここに、本家本元の解説があった。。

SSH/OpenSSH/Keys - Community Help Wiki

これで何ができるのか?

もちろん、パスワードをいちいち入力しなくてもログインできる。という操作上のメリットもありますが、
そもそもこの記事を書こうと思ったのは、Ansibleで必要であるため。
AnsibleというのはChefとかPuppetとかと同類の構成管理ツールというヤツです。
つまり、操作の自動化のために必要だということです。

また、GitHub、GitLab、GitBucketなども、コマンドは使いませんが、
自分の公開鍵を登録するというトコロは同じ仕組みだと思うので、
勉強&備忘録のために記事を書いてみました。