コマンド1発!ssh-copy-id でSSH公開鍵を登録

2016年8月10日  カテゴリー:Linux  タグ:
Pocket
LINEで送る

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鍵ペアを生成します。

$ ssh-keygen
(略)
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)を登録します。

$ ls -1 ~/.ssh/
id_rsa・・・・・秘密鍵
id_rsa.pub・・・公開鍵

ssh-copy-id コマンドの使い方

下記コマンドを実行するだけで、SSH公開鍵の登録が完了します。

$ ssh-copy-id user@hostname

接続先のサーバーに 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 コマンドを使えば、そういったミスも無くなりそうですね。

スポンサーリンク
Pocket
LINEで送る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です