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 OPTION | SSH コマンドに追加オプションを渡す | 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"を指定する。
参考
- manページ
https://man7.org/linux/man-pages/man1/ssh-copy-id.1.html - OpenSSH 公式ドキュメント
https://www.openssh.com/

コメント