1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows11 → LinuxへSSH公開鍵を転送してパスワードなしログインする手順(超初心者向け)

1
Last updated at Posted at 2026-03-20

はじめに

SSHでLinuxサーバにログインする際、毎回パスワードを入力するのは少し面倒です。

この記事では、Windows11からLinuxへ公開鍵を転送し、パスワードなしでログインできるようにする手順を、できるだけやさしく、順番に説明します。

🎯 この記事でできること

  • SSH鍵の仕組みがわかる
  • Windows側でSSH鍵を作成できる
  • 公開鍵をLinuxに転送できる
  • 公開鍵をLinuxに登録できる
  • パスワードなしでSSHログインできる

🌐 IPアドレスとは?

SSHで接続するときは、まず接続先のサーバを指定します。

ssh root@XXX.XXX.XXX.XXX

この XXX.XXX.XXX.XXXIPアドレス です。
IPアドレスは、サーバの「住所」のようなものです。

🔑 SSH鍵の仕組み

SSH鍵認証では、2つの鍵を使います。

  • 秘密鍵:自分のPCの中だけに置く鍵
  • 公開鍵:Linuxサーバに置く鍵

この2つが対応していると、SSHでログインできます。

🧰 前提条件

  • Windows11を使っている
  • LinuxサーバにSSHで接続できる
  • 公開鍵ファイルを作成済み、またはこれから作成する
  • この記事では公開鍵ファイル名を id_ed25519.pub とする

🔧 SSH鍵をまだ作っていない場合

まず、Windows側でSSH鍵を作成します。
ここで作られるファイルは、通常 C:\Users\ユーザー名\.ssh\ に保存されます。

① Windows Terminalを起動する

以下のどちらかで起動できます。

  • スタートメニューで「Windows Terminal」と検索する
  • スタートボタンを右クリックして「ターミナル」を開く

② 鍵を作成するコマンドを実行する

ssh-keygen -t ed25519

このコマンドは、SSH鍵を新しく作るためのものです。
ed25519 は現在よく使われる方式です。

③ 表示される内容と操作

実行すると、次のように聞かれます。

Enter file in which to save the key (C:\Users\ユーザー名\.ssh\id_ed25519):

👉 そのまま Enter を押します。
通常は、表示されている場所にそのまま保存すれば大丈夫です。

Enter passphrase (empty for no passphrase):

👉 ここも Enter で進めます。
今回は初心者向けに、まずはパスフレーズなしで進めます。

Enter same passphrase again:

👉 もう一度 Enter を押します。

④ 作成されるファイル

鍵を作ると、通常は次の2つのファイルができます。

ファイル名 説明
id_ed25519 秘密鍵。自分のPCの中だけに置く
id_ed25519.pub 公開鍵。Linuxサーバに登録する

🪜 手順全体

これから行う作業の流れは次の通りです。

① 公開鍵をLinuxに転送

まず、Windows側で作られた公開鍵の場所を確認します。

C:\Users\ユーザー名\.ssh\id_ed25519.pub

この .pub が付いているファイルが 公開鍵 です。
ここで大事なのは、サーバへ送るのは公開鍵だけ という点です。
秘密鍵の id_ed25519 は、外に出してはいけません。

①-1 公開鍵のあるフォルダへ移動する

PowerShell または Windows Terminal で、次を実行します。

cd C:\Users\ユーザー名\.ssh

これは、「公開鍵ファイルが置いてある場所に移動する」という意味です。

①-2 公開鍵をLinuxへ転送する

scp .\id_ed25519.pub root@XXX.XXX.XXX.XXX:/root/

このコマンドは、次の2つを同時にしています。

  • Windowsの公開鍵ファイルを送る
  • Linuxの /root/ に置く

何を意味しているか

  • scp:ファイルを安全にコピーするコマンド
  • .\id_ed25519.pub:今いるフォルダにある公開鍵ファイル
  • root@XXX.XXX.XXX.XXX:接続先のLinuxサーバ
  • :/root/:Linux側の保存先

①-3 すでに接続できる秘密鍵がある場合

すでにLinuxサーバへ接続できる秘密鍵を持っているなら、
その秘密鍵を使って scp を実行できます。

このとき大事なのは、自分がサーバに入るための秘密鍵を使いながら、他人の公開鍵ファイルを転送する という点です。

何をしているのか

  • 自分の秘密鍵scp がサーバに入るために使う
  • 他人の公開鍵:サーバへコピーするファイル
  • サーバ側の authorized_keys:あとで登録する場所

実行コマンド

scp -i C:\Users\ユーザー名\.ssh\id_ed25519 .\メンバーの公開鍵.pub root@XXX.XXX.XXX.XXX:/root/

このコマンドの意味

  • -i C:\Users\ユーザー名\.ssh\id_ed25519
    自分がサーバへ接続するための秘密鍵
  • .\メンバーの公開鍵.pub
    転送したい公開鍵ファイル
  • root@XXX.XXX.XXX.XXX:/root/
    転送先

ここでの流れ

  1. 自分の秘密鍵でLinuxサーバに接続する
  2. 公開鍵ファイルをサーバへコピーする

👉 つまり、認証に使う鍵送るファイル は別物です。

② 公開鍵を登録

次に、Linuxサーバにログインして、さきほど転送した公開鍵を登録します。

ssh root@XXX.XXX.XXX.XXX

②-1 転送したファイルがあるか確認する

ls -l /root/id_ed25519.pub

このコマンドは、ファイルが本当に置かれているかを確認しています。

  • 表示されればOK
  • 表示されなければ、転送に失敗しています

②-2 .ssh ディレクトリがあるか確認する

ls -ld /root/.ssh

.ssh ディレクトリは、SSH関連の設定を置く場所です。
すでにあるなら、そのままでかまいません。

存在しない場合だけ、次を実行します。

mkdir -p /root/.ssh

ここでの -p は、すでにあってもエラーにしない ための指定です。
初心者のうちは、この指定を付けておくと安心です。

②-3 公開鍵を登録する

cat /root/id_ed25519.pub >> /root/.ssh/authorized_keys

このコマンドは、公開鍵の中身を authorized_keys に追加しています。

何をしているのか

  • cat /root/id_ed25519.pub
    → 公開鍵ファイルの中身を表示する
  • >> /root/.ssh/authorized_keys
    → その内容を authorized_keys に追記する

authorized_keys は、このサーバに入ってよい公開鍵の一覧 です。

②-4 登録できたか確認する

cat /root/.ssh/authorized_keys

表示された内容の中に、さきほどの公開鍵があればOKです。
公開鍵は1行で表示されるのが普通です。

③ 権限を設定する

SSHでは、ファイルの権限が適切でないと認証に失敗することがあります。
そのため、次の設定を行います。

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys

何をしているのか

  • chmod 700 /root/.ssh
    .ssh ディレクトリを、所有者だけが扱えるようにする
  • chmod 600 /root/.ssh/authorized_keys
    authorized_keys を、所有者だけが読めるようにする

SSHはセキュリティが厳しいので、権限がゆるいとログインを拒否することがあります。

④ 動作確認

ここまでできたら、実際にSSHでログインできるか確認します。

ssh root@XXX.XXX.XXX.XXX

何を確認するのか

  • パスワードを聞かれずにログインできるか
  • 鍵認証が正しく動いているか

うまくいったとき

  • パスワードを求められずにログインできる
  • そのままLinuxの画面が表示される

鍵を明示的に指定したい場合

SSHは通常、C:\Users\ユーザー名\.ssh\ にある鍵を自動で使います。
ただし、どの鍵を使うかをはっきりさせたい場合は、-i を付けて指定できます。

ssh -i C:\Users\ユーザー名\.ssh\id_ed25519 root@XXX.XXX.XXX.XXX

これは、この秘密鍵を使って接続する と明示する書き方です。
初心者のうちは、どの鍵を使っているか分かりやすいので便利です。

⚠️ よくあるエラー

Permission denied (publickey)

このエラーは、SSH鍵認証が通らなかったときに出ます。

原因としては、たとえば次のようなものがあります。

  • 公開鍵の登録がうまくいっていない
  • authorized_keys の中身が正しくない
  • .sshauthorized_keys の権限が合っていない
  • 使っている秘密鍵が違う

対処として、まず権限を確認します。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

scpで失敗する

/home/root は存在しない

これは、保存先の指定が違っている可能性があります。
root のホームディレクトリは通常 /root です。

🔒 セキュリティ強化(推奨)

ここまででSSH鍵でログインできるようになりました。
次は、パスワードログインを無効にして、セキュリティを高めます。

なぜやるのか

パスワードは、総当たり攻撃の対象になりやすいです。
鍵認証だけにしておくと、より安全です。

① SSH設定ファイルを開く

nano /etc/ssh/sshd_config

これは、SSHサーバの設定ファイルを編集するためのコマンドです。

② パスワードログインを無効にする

設定ファイルの中で、次の行を探します。

PasswordAuthentication no

もし yes になっていたら no に変更します。
もし行がなければ、追加してもかまいません。

この設定は、パスワードではログインできないようにする という意味です。

③ SSHサービスを再起動する

以下のコマンドを実行します。

UbuntuやDebian系:

systemctl restart ssh

RHEL / CentOS / Rocky Linux など:

systemctl restart sshd

設定を変えただけでは反映されないことがあるので、SSHサービスを再起動します。

⚠️ 注意

この設定を入れる前に、鍵認証でログインできることを必ず確認してください。

もし確認前にパスワードログインを無効にすると、入れなくなる可能性があります。

🎉 まとめ

  • WindowsでSSH鍵を作成する
  • 公開鍵をLinuxへ転送する
  • authorized_keys に登録する
  • 権限を整える
  • SSH鍵でログインできるか確認する
  • 必要ならパスワードログインを無効にする

💬 補足

ホスト名でも接続できます。

ssh root@your-server.example.com

SSH鍵認証は、最初は少し分かりにくいですが、一度仕組みがわかるととても便利です。
サーバ運用ではよく使う基本操作なので、じっくり慣れていくのが大事です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?