ssh-copy-id コマンドは、クライアントPCで生成したSSH公開鍵を、SSH接続先のサーバーに、たった1行のコマンドで登録できるとても便利なツールです。このコマンドは1999年頃から存在しているようですが、つい最近まで私は ssh-copy-id コマンドを知りませんでした(^^;) そこで今回は、ssh-copy-id コマンドの使い方をまとめてみました。
SSH公開鍵の登録とは?
SSH公開鍵の登録は、クライアントPCでSSH鍵ペアの「秘密鍵」と「公開鍵」を生成し、SSHで接続する先のサーバーのホームディレクトリ下にある「.ssh/authorized_keys」ファイルに「公開鍵」を登録することを指します。
クライアントPCでSSH鍵ペアの生成
クライアントPCにSSH鍵ペアが無い場合は、ssh-keygen コマンドを使ってSSH鍵ペアを生成します。
(略)
Enter file in which to save the key (/Users/test-user/.ssh/id_rsa): <空エンター>
Enter passphrase (empty for no passphrase): <パスフレーズ>
Enter same passphrase again: <パスフレーズ>
(略)
ホーム直下に「.ssh/」ディレクトリが作成され、その下にSSHの秘密鍵と公開鍵が作成されます。SSH接続先のサーバーには、SSHの公開鍵(id_rsa.pub)を登録します。
id_rsa・・・・・秘密鍵
id_rsa.pub・・・公開鍵
ssh-copy-id コマンドの使い方
下記コマンドを実行するだけで、SSH公開鍵の登録が完了します。
接続先のサーバーに authorized_keysファイルがあるとか無いとか、パーミッションをどうするとかを考える必要もありません。ホント素晴らしいコマンドです。
せっかくなので ssh-copy-id コマンドのオプションについても調べてみました。
-i
SSH公開鍵の指定。クライアントPCに複数の公開鍵がある場合や、公開鍵の名前を変えている場合は、このオプションに続けて公開鍵のパスを指定します。
-n
このオプションを指定すると、ドライラン(dry-run)モードで動作します。実際にSSH公開鍵の登録は行われませんが、処理結果のみ表示してくれます。
-p
SSHの接続ポートを指定できます。これはよく使いそうですね。
-o
SSHオプションを指定できます。
-h -?
簡単な使い方を表示します。
終わりに
手作業でSSH公開鍵を登録している頃は、authorized_keys ファイルのパーミッションを適切に設定していないため、SSHログインが出来なくなったり「cat id_rsa.pub > .ssh/authorized_keys」としてしまって、登録済みのSSH公開鍵を削除してしまったりすることもありました、、、ssh-copy-id コマンドを使えば、そういったミスも無くなりそうですね。
コメント