チュートリアル

SSH 鍵をサーバーにコピーする方法(ssh-copy-id と代替手段)

鍵でログインするには、公開鍵がサーバーの authorized_keys に入っている必要があります。一番簡単なのは ssh-copy-id;Windows や制限付きシェルでの手動の方法;そしてスマホでのワンタップの方法。

CC Chen Chen· 創業者·2026年6月24日·5 分で読めます

手っ取り早い答え

パスワードではなく鍵でログインするには、あなたの公開鍵がサーバーの ~/.ssh/authorized_keys ファイルに入っている必要があります。そこに置く一番簡単な方法は ssh-copy-id です:

ssh-copy-id user@host

パスワードを一度だけ尋ね、公開鍵を追記し、それ以降は鍵でログインできます。本記事では ssh-copy-id、それが使えないとき(Windows、制限付きシェル)の手動の方法、そしてスマホでのワンタップの方法を扱います。

方法 1 — ssh-copy-id(Linux/macOS)

# copies your default public key (~/.ssh/id_ed25519.pub)
ssh-copy-id user@host

# or a specific key:
ssh-copy-id -i ~/.ssh/mykey.pub user@host

この一度だけパスワードでログインし、必要なら正しいパーミッションで ~/.ssh を作成し、鍵を authorized_keys に追記します。まだ鍵がない場合は、まず ssh-keygen -t ed25519 で生成してください(Ed25519 vs RSA を参照)。

方法 2 — 手動(Windows、または ssh-copy-id がない場合)

Windows には ssh-copy-id が付属しません。手作業で追記します——.pub ファイルの内容をサーバーの authorized_keys に貼り付けます:

# from any machine, one line:
cat ~/.ssh/id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

Windows PowerShell では:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@host "cat >> .ssh/authorized_keys"

chmod は重要です:パーミッションが緩すぎると SSH は authorized_keys を無視します。コピー後も鍵が機能しない場合は、Permission denied (publickey) を確認してください。

方法 3 — スマホでワンタップ

スマホには ssh-copy-id コマンドがなく、ファイルを SSH 経由で簡単にパイプする手段もありません。優れたモバイルクライアントが代わりにやってくれます:TermAI は端末の Keychain に Ed25519 鍵を生成し、サーバーへデプロイするアクションを備えています。これは既存の使えるログインを通じて公開鍵側を authorized_keys に書き込みます——ssh-copy-id と同じことを、ワンタップで。その後は鍵で接続し、パスワードは不要です。

デプロイ済みの SSH 鍵でサーバーに接続したスマホ
ssh-copy-id のモバイル版:ワンタップでアプリが生成した公開鍵をサーバーの authorized_keys にデプロイ。既に持っているログインを利用します。

うまくいったか確認する

再接続してみてください——パスワードを求められないはずです。それでも求められる場合、鍵が受け入れられていません:6 つのよくある原因(パーミッション、ユーザー違い、sshd 設定…)について SSH でまだパスワードを聞かれる を参照してください。

FAQ

SSH 鍵をサーバーにコピーするには?
ssh-copy-id user@host を実行します(Linux/macOS)。Windows や制限された環境では、.pub ファイルをサーバーの ~/.ssh/authorized_keys に手作業で追記します。スマホでは、ワンタップで鍵をデプロイする TermAI のようなクライアントを使ってください。

ssh-copy-id は実際に何をするの?
パスワードで一度ログインし、あなたの公開鍵を ~/.ssh/authorized_keys に追記して正しいパーミッションを設定します。秘密鍵はあなたのマシンから決して出ません。

authorized_keys はどこにある?
ログインするユーザーのホームディレクトリ内:サーバー上の ~/.ssh/authorized_keys です。モード 600 で、700 の .ssh ディレクトリの中になければなりません。

ssh-copy-id が見つからない — 何を使えばいい?
Windows や一部の最小構成システムには存在しません。鍵を手動でパイプします:cat key.pub | ssh user@host "cat >> ~/.ssh/authorized_keys"

クイックファクト

  • ゴール:あなたの公開鍵をサーバーの ~/.ssh/authorized_keys
  • 一番簡単:ssh-copy-id user@host(Linux/macOS)
  • 手動 / Windows:.pub ファイルを authorized_keys にパイプし、chmod 600/700
  • モバイル:ワンタップデプロイ(TermAI)—— ssh-copy-id と同じ結果
  • コピーされるのは公開鍵だけ;秘密鍵は端末に残ります
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog