ssh-copy-id – 公開鍵をリモートサーバーへ自動配置するツール

リモートアクセス

ssh-copy-id は、ローカルの公開鍵(~/.ssh/id_rsa.pub など)をリモートサーバーの authorized_keys に安全に追加するコマンドです。
実務では「パスワードなしでSSHログインできるようにしたい」「サーバー構築後に複数鍵をまとめて登録したい」場合に使用されます。

構文(Syntax)

ssh-copy-id [オプション] USER@HOST
ssh-copy-id -i 公開鍵ファイル USER@HOST

リモート側では .ssh/authorized_keys が自動的に作成され(なければ)、適切なパーミッションが設定されます。

主なオプション一覧

オプション説明使用例
(なし)デフォルト鍵(~/.ssh/id_rsa.pub など)をコピーssh-copy-id user@host
-i FILE指定した公開鍵ファイルをリモートにコピーssh-copy-id -i ~/.ssh/mykey.pub user@host
-o OPTIONSSH コマンドに追加オプションを渡すssh-copy-id -o "Port=2222" user@host
-f既に存在する鍵があっても強制的に追加ssh-copy-id -f user@host

※ デフォルトでは .pub の公開鍵のみコピーします(秘密鍵は送られません)。

実行例

例1: パスワードレスログイン設定のために公開鍵をコピーする

ssh-copy-id user@example.com

出力例(例)

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_ed25519.pub"
The authenticity of host 'example.com (203.0.113.1)' can't be established.
...
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'user@example.com'"

例2: 別の公開鍵を指定してコピーする

ssh-copy-id -i ~/.ssh/project_key.pub root@192.168.1.10

出力例

Number of key(s) added: 1

例3: カスタムポートで接続して公開鍵をコピーする

ssh-copy-id -o "Port=2222" admin@server.local

出力例

Number of key(s) added: 1

例4(エラー例): パスワードが間違っている

ssh-copy-id user@host

出力例(例)

Permission denied, please try again.

→ 正しい SSH パスワードを入力する必要があります。

関連コマンド

  • ssh
    リモートサーバーへ接続。ssh-copy-id 実行後はパスワードなしでログイン可能になる。
  • ssh-keygen
    SSH鍵の作成と管理を行う。ssh-copy-id と併用することが多い。
  • ssh-agent / ssh-add
    鍵認証後、パスフレーズを毎回入力しないためのエージェント。
  • scp
    ファイルコピー用。手動で公開鍵を配置する場合の代替方法。

備考

  • リモート側に .ssh/authorized_keys がない場合は自動作成され、パーミッション (700 / 600) も適切に修正されるため安全。
  • 公開鍵 .pub のみ送られるため、秘密鍵が漏洩することはありません。
  • リモートの SSH 設定で PasswordAuthentication no の場合、パスワード認証が無効であり ssh-copy-id が利用できないため注意(手動でコピーする必要あり)。
  • ファイアウォールやポート変更がある場合は -o "Port=XXXX" を指定する。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント