Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

- 備忘録 - SSH公開鍵認証でVPSに接続する方法

0
Last updated at Posted at 2026-09-09

SSH公開鍵認証でVPSに接続する方法

SSHでVPSなどのサーバーに接続する際は、公開鍵認証を使うとパスワードを使わずに安全にログインできる。

基本的な流れは、

ローカルPC
  │
  ├── 秘密鍵
  └── 公開鍵
        │
        │ 公開鍵をサーバーへ登録
        ▼
VPS
  └── ~/.ssh/authorized_keys
        │
        │ SSH公開鍵認証
        ▼
ローカルPC → VPS

1. ローカルPCでSSHキーを作成

WindowsのPowerShellで以下を実行する。

ssh-keygen -t ed25519 -f $HOME\.ssh\<キーの名前>

例えば、

ssh-keygen -t ed25519 -f $HOME\.ssh\vps_key

とすると、以下の2つのファイルが作成される。

~/.ssh/
├── vps_key
└── vps_key.pub

それぞれの役割は以下の通り。

ファイル 役割
vps_key 秘密鍵
vps_key.pub 公開鍵

秘密鍵は絶対に他人に渡したり、GitHubなどに公開したりしない。


2. 公開鍵を表示してコピー

ローカルPCで以下を実行する。

cat $HOME\.ssh\<キーの名前>.pub

例えば、

cat $HOME\.ssh\vps_key.pub

すると、

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... username@PC

のような1行が表示される。

この公開鍵の1行全体をコピーする。


3. VPS側で .ssh ディレクトリを作成

VPSにログインし、以下を実行する。

mkdir -p ~/.ssh

~/.ssh が存在しない場合に作成する。

-p を付けることで、すでに存在していてもエラーにならない。


4. .ssh の権限を設定

chmod 700 ~/.ssh

700 は所有者にのみ、

読み取り    r
書き込み    w
実行        x

の権限を与える設定。

SSHでは .ssh ディレクトリを他のユーザーからアクセスできないようにする。


5. 公開鍵を authorized_keys に登録

先ほどローカルPCでコピーした公開鍵を、VPS側で以下のように追加する。

echo 'コピーした公開鍵' >> ~/.ssh/authorized_keys

例えば、

echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... username@PC' >> ~/.ssh/authorized_keys

とする。

authorized_keys とは?

authorized_keys は、

このサーバーへのSSHログインを許可する公開鍵を登録しておくファイル

である。

複数の公開鍵を登録することもできる。

~/.ssh/authorized_keys

ssh-ed25519 AAAA... PC1
ssh-ed25519 AAAA... PC2
ssh-ed25519 AAAA... PC3

1行につき1つの公開鍵を登録する。


6. authorized_keys の権限を設定

chmod 600 ~/.ssh/authorized_keys

600 は所有者だけが、

読み取り    r
書き込み    w

できる設定。

所有者:rw-
グループ:---
その他:---

SSHの公開鍵認証では、このように適切な権限を設定しておく。


7. ローカルPCに戻ってSSH接続

VPSからログアウトしてローカルPCに戻る。

WindowsのPowerShellで、

ssh -i $HOME\.ssh\<キーの名前> <VPSのユーザー名>@<VPSの外部IP>

を実行する。

例えば、

ssh -i $HOME\.ssh\vps_key root@203.0.113.10

または、

ssh -i $HOME\.ssh\vps_key ubuntu@203.0.113.10

のようにする。


SSH公開鍵認証の仕組み

最終的には以下のような構成になる。

┌─────────────────────────┐
│       ローカルPC         │
│                         │
│  vps_key                │
│  └─ 秘密鍵              │
│                         │
│  vps_key.pub            │
│  └─ 公開鍵              │
└───────────┬─────────────┘
            │
            │ SSH接続
            │
            │ 秘密鍵を使用して認証
            ▼
┌─────────────────────────┐
│          VPS            │
│                         │
│  ~/.ssh/                │
│       │                 │
│       └─ authorized_keys│
│             │           │
│             └─ 公開鍵   │
└─────────────────────────┘

SSH接続時には、VPS側の authorized_keys に登録されている公開鍵と、ローカルPCが持っている秘密鍵が対応していることを利用して認証する。


コマンドまとめ

ローカルPC

SSHキーを作成

ssh-keygen -t ed25519 -f $HOME\.ssh\<キーの名前>

公開鍵を表示

cat $HOME\.ssh\<キーの名前>.pub

表示された公開鍵をコピーする。


VPS

.ssh を作成

mkdir -p ~/.ssh

.ssh の権限を設定

chmod 700 ~/.ssh

公開鍵を登録

echo 'コピーした公開鍵' >> ~/.ssh/authorized_keys

authorized_keys の権限を設定

chmod 600 ~/.ssh/authorized_keys

ローカルPC

SSH接続

ssh -i $HOME\.ssh\<キーの名前> <VPSのユーザー名>@<VPSの外部IP>

重要なポイント

  • 秘密鍵はローカルPCに置く
  • 公開鍵はVPSの ~/.ssh/authorized_keys に登録する
  • 秘密鍵は絶対に公開しない
  • authorized_keys は複数の公開鍵を登録できる
  • chmod 700 ~/.ssh.ssh を保護する
  • chmod 600 ~/.ssh/authorized_keysauthorized_keys を保護する
  • SSH接続時は秘密鍵を -i で指定する
  • <VPSのユーザー名> はVPS上でログインするユーザー名
  • <VPSの外部IP> はSSH接続先となるサーバーのIPアドレス
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?