SSH Key Generator

ブラウザ内だけで生成。サーバーには送りません。

GitHub

どこに登録するか

公開鍵(.pub)
接続先サーバーの ~/.ssh/authorized_keys に1行追記します。 GitHub / GitLab / Bitbucket なら「SSH keys」設定画面へ貼り付け。
秘密鍵
自分の PC だけに置きます。通常は ~/.ssh/id_ed25519(または選んだアルゴリズム名)として保存し、権限を chmod 600 に。 サーバーや Git ホストには絶対に上げないでください。
このページについて
鍵はすべてブラウザ内(Web Crypto)で生成され、どこにも保存されません。 タブを閉じると消えます。使い終わったらダウンロード済みファイルだけ残してください。

公開鍵をリモートへ一発登録

相手サーバーへは最初だけパスワードで SSH ログインできれば十分です。 登録元の PC から次のいずれかを実行すると、対話でパスワードを聞かれたあと authorized_keys へ公開鍵が追記されます(サーバー側で手編集不要)。

上の「ユーザー名」「ホスト名」「パスフレーズ」欄を入れると、下の説明とコマンド例が差し替わります。

  1. 1. いちばん簡単 — ssh-copy-id

    デフォルト鍵(例: ~/.ssh/id_ed25519.pub)を送る場合:

    ssh-copy-id user@host

    このページでダウンロードした公開鍵を指定する場合:

    ssh-copy-id -i ~/Downloads/id_ed25519.pub user@host
  2. 2. ssh-copy-id が無いとき — cat | ssh

    cat ~/Downloads/id_ed25519.pub | ssh user@host 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'

    .pub ファイルを使わず、公開鍵の1行をそのまま書き込むとき:

    ssh user@host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && printf '%s\n' 'ssh-ed25519 AAAA...your-public-key... comment' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
  3. 3. クリップボードの公開鍵をそのまま送る

    ページで「コピー」したあと(Linux / Wayland 例):

    wl-paste | ssh user@host 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'

    X11 なら xclip -selection clipboard -o、macOS なら pbpaste に置き換え。

  4. 4. 秘密鍵もまとめて手元へ置く → 登録

    mkdir -p ~/.ssh && chmod 700 ~/.ssh
    mv ~/Downloads/id_ed25519 ~/.ssh/ && mv ~/Downloads/id_ed25519.pub ~/.ssh/
    chmod 600 ~/.ssh/id_ed25519 && chmod 644 ~/.ssh/id_ed25519.pub
    ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
  5. 5. ポート番号が 22 以外のとき

    ssh-copy-id -i ~/Downloads/id_ed25519.pub -p 2222 user@host
    cat ~/Downloads/id_ed25519.pub | ssh -p 2222 user@host 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'
  6. 6. 登録できたか確認

    ssh -i ~/.ssh/id_ed25519 user@host

    ログイン用パスワードを聞かれずに入れれば成功です。

ssh 短い名前だけで繋ぐ(接続元の設定)

接続元 PC の ~/.ssh/config にホスト別名を書いておくと、 長いオプションの代わりに短い名前だけで入れます。 秘密鍵・ユーザー名・ポート・実ホスト名をここに集約します。

  1. 1. ディレクトリと権限

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
  2. 2. 秘密鍵を置く(まだなら)

    mv ~/Downloads/id_ed25519 ~/.ssh/
    chmod 600 ~/.ssh/id_ed25519
  3. 3. 設定ファイル ~/.ssh/config を作る / 追記する

    新規作成の例(エディタでも可):

    cat >> ~/.ssh/config <<'EOF'
    Host myserver
      HostName example.invalid
      User yourname
      Port 22
      IdentityFile ~/.ssh/id_ed25519
      IdentitiesOnly yes
    EOF
    chmod 600 ~/.ssh/config

    各行の意味:

    • Host … 打ち込む短い名前
    • HostName … 実際の IP または FQDN
    • User … ログインユーザー
    • Port … ポート(22 なら省略可)
    • IdentityFile … このページで作った秘密鍵のパス
    • IdentitiesOnly yes … 指定鍵だけ使う
  4. 4. 接続

    ssh myserver

    公開鍵を相手側へ登録済みなら、これだけで入れます。

  5. 5. どの設定が効くか確認

    ssh -G myserver | rg -i '^(hostname|user|port|identityfile) '

    rg が無ければ grep -E に置き換えてください。

この Web を使わずコマンドラインだけで行う

ブラウザを使いたくない場合は、接続元 PC のターミナルだけで鍵の生成からリモート登録まで完結できます。 上で選んだアルゴリズム・コメント・接続先に合わせてコマンド例を差し替えています。

  1. 1. 鍵ペアを生成(ssh-keygen)

    パスフレーズなし(非対話)の例:

    ssh-keygen -t ed25519 -C "ssh-key-generator" -f ~/.ssh/id_ed25519 -N ""

    パスフレーズを付けたいときは末尾の -N "" を外すと、実行時に入力を求められます。

  2. 2. 公開鍵をリモートへ登録

    ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host

    ssh-copy-id が無いとき:

    cat ~/.ssh/id_ed25519.pub | ssh user@host 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'

    .pub ファイルを使わず、公開鍵の1行をそのまま書き込むとき:

    ssh user@host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && printf '%s\n' 'ssh-ed25519 AAAA...your-public-key... comment' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

    キーを生成済みなら、上の例は実際の公開鍵に差し替わります(公開鍵のみ。秘密鍵は使いません)。

  3. 3. 接続確認

    ssh -i ~/.ssh/id_ed25519 user@host

    ログイン用パスワードを聞かれなければ成功です。

  4. 4. 短い名前で繋ぐ(任意)

    あとの手順は上の「短い名前だけで繋ぐ」と同じです。~/.ssh/config に Host / HostName / User / IdentityFile を書けば ssh myserver だけで接続できます。