ssh-copy-idコマンドで公開鍵を登録しよう

リモートログインは最近はSSHが常識になっていますが、毎回パスワードを入力するのは面倒だということで、ssh-agentと公開鍵を組み合わせている人も多いのではないでしょうか。

公開鍵を利用するには、リモートホストのアカウントの~/.ssh/authorized_keysファイルへ公開鍵を追加する必要があります。この追加を手軽にするには、ssh-copy-idコマンドが便利です。ただし、ssh-copy-idコマンドを使う場合はパスワード認証やホスト認証などですでにログインはできる環境になっている必要があります。運用環境で利用するには、少し微妙ですね。

おそらく初期セットアップ時に一時的にパスワード認証を有効にしておいて、セットアップ後に公開鍵方式のみへ切り替えるといった使い方が多いはずです。

運用環境ではなく開発環境の場合は、パスワード認証でのアクセスを許してあっても、公開鍵でのアクセスの方が楽なので、これを有効にしたいという場合には積極的に利用したいところです。

使い方は簡単です。たとえば、user001ユーザが、host001にある同名アカウントの~/.ssh/authorized_keysファイルへ公開鍵を追加するには、次のようになります。簡単ですね。

$ ssh-copy-id host001
user001@host001's password: 
Now try logging into the machine, with "ssh 'host001'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

ssh-copy-idを使わない場合は、.sshディレクトリの作成から必要で、次のような手順になります。

$ ssh host001 mkdir .ssh
$ ssh host001 chmod 700 .ssh
$ cat ~/.ssh/id_rsa.pub | ssh host001 'cat >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'
The authenticity of host 'host001 (192.168.0.11)' can't be established.
(略)
Are you sure you want to continue connecting (yes/no)? yes ← yesと入寮
Warning: Permanently added 'node3,192.168.33.13' (RSA) to the list of known hosts.
user001@host001's password: ← host001のuser001のパスワードを入力(表示されない)

ローカルホストの~/.ssh/id_rsa.pubには公開鍵の情報があり、これをリモートホストの~/.ssh/authorizedkeysへ追加しています。リモートホストのauthorizedkeysには複数の公開鍵が登録できます。既存の情報を消さないように追加モードで書き込むのが基本です。

これで、sshコマンドでリモートホストへ接続すると、公開鍵方式でのログインになります。ssh-agentと組み合わせると、パスフレーズの入力を1度すれば、それ以降はパスフレーズ入力を省略してログインすることができるようになります。

下記も参考になります。

同じタグの記事: Linux
同じタグの記事: OpenSSH
同じタグの記事: SSH
同じカテゴリの記事: Linux
関連書籍: OpenSSH