さくらVPS上に構築したCentOSサーバーにパスフレーズで ssh 接続できるようにする

Web

概要

自サイトのサーバーへ SSH 接続する際、パスフレーズを使ってログインできるようにする

対象サーバー

  • 接続先(ホスト)
    • hi3103.net: さくらVPSで構築したWebサーバー。OSは CentOS7 を使用(変えなきゃあ…)。
  • 接続元(クライアント)
    1. Windows 11 に構築した WLS2/Ubuntu 環境
    2. Windows 11 環境

参考

作業ログ

1:WLS2/Ubuntu 環境の場合

クライアント側で認証鍵を生成

Terminal で Ubuntu を開く

暗号化方式と出力先ファイルを指定して ssh-keygen を実行

$ ssh-keygen -t ed25519 -f ~/.ssh/鍵ファイルの名前

2回パスフレーズを入力させられる

Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

WSL環境の .ssh ディレクトリ内に、秘密鍵と公開鍵が生成される

Your identification has been saved in /home/ユーザー名/.ssh/鍵ファイルの名前
Your public key has been saved in /home/ユーザー名/.ssh/鍵ファイルの名前.pub

該当ディレクトリを参照し、生成されたことを確認

$ ls -la ~/.ssh | grep 鍵ファイルの名前
-rw------- 1 ユーザー名 ユーザー名  464  4月 14 19:47 鍵ファイルの名前
-rw-r--r-- 1 ユーザー名 ユーザー名   97  4月 14 19:47 鍵ファイルの名前.pub

公開鍵( .pub がついている方)の中身をクリップボードに保存

※pbcopyコマンドはエイリアスで使えるようにしたやつ。詳細は別記事を参照。

$ cat ~/.ssh/鍵ファイルの名前.pub | pbcopy
ホスト側に公開鍵を設置

ssh コマンドで hi3103.net に接続

$ ssh ユーザー名@hi3103.net

ホームディレクトリに .ssh ディレクトリを用意

$ cd ~/
$ mkdir .ssh

.ssh ディレクトリのパーミッションを 700 に設定(グループ、その他の権限をすべて取る)

$ chmod 700 .ssh

.ssh ディレクトリの中に、 authorized_keys というファイルを用意し、先ほどクリップボードに保存した公開鍵の内容をペーストして保存

$ vi ~/.ssh/authorized_keys

authorized_keys のパーミッションも 700 にする

$ chmod 700 ~/.ssh/authorized_keys
接続テスト

ssh コマンドを、-i オプションで秘密鍵を指定してから実行

パスフレーズが聞かれるので入力し、接続できればOK

$ ssh ユーザー名@hi3103.net -i ~/.ssh/鍵ファイルの名前
config を設定

毎回認証キーを指定するのは面倒なので、 ~/.ssh/config を作成して接続情報を記載する

$ vi ~/.ssh/config

以下を記述

Host hi3103-net
    Hostname hi3103.net
    User ユーザー名
    IdentityFile ~/.ssh/鍵ファイルの名前

接続するときは、ssh コマンドに Host に指定した文字列を渡す
以下実行して繋がるか確認 → 成功!

$ ssh hi3103-net

2:Windows 11 環境の場合

基本同じことを Windows Powershell のほうで実施する

クライアント側で認証鍵を生成

認証鍵を生成

>  ssh-keygen -t ed25519 -f C:\Users\ユーザー名\.ssh\鍵ファイルの名前

生成された公開鍵の中身をクリップボードに保存

> cat 'C:\Users\ユーザー名\.ssh\鍵ファイルの名前.pub' | clip.exe
ホスト側に公開鍵を追加

すでに設定が済んでいる WSL2/Ubuntu 環境のほうからホストPCに接続し、 authorized_keys に公開鍵を追加する

$ ssh hi3103-net
$ vi ~/.ssh/authorized_keys
config を設定&接続テスト

Windows Powershell に戻り、Windows 11 側の ~/.ssh/config に設定を追記する

vi コマンドは使えないので、メモ帳で開いて更新・保存する

> notepad C:\Users\ユーザー名\.ssh\config

接続テスト → パスフレーズでログインできた

> ssh hi3103-net
Enter passphrase for key 'C:\Users\ユーザー名/.ssh/鍵ファイルの名前':

Comments

  • スパム対策のため、コメント本文にURLが含まれている場合は「承認待ち」となり、すぐに投稿が反映されません。ご了承ください。
  • 公序良俗に反する内容、個人が特定できる情報、スパム投稿と思われるコメント等については、予告なく編集・削除する場合があります。