さくらVPS上に構築したCentOSサーバーにパスフレーズで ssh 接続できるようにする
概要
自サイトのサーバーへ SSH 接続する際、パスフレーズを使ってログインできるようにする
対象サーバー
- 接続先(ホスト)
- hi3103.net: さくらVPSで構築したWebサーバー。OSは CentOS7 を使用(変えなきゃあ…)。
- 接続元(クライアント)
- Windows 11 に構築した WLS2/Ubuntu 環境
- Windows 11 環境
参考
- 「よく分かる公開鍵認証」~初心者でもよくわかる!VPSによるWebサーバー運用講座(2) | さくらのナレッジ
- 【 ssh-keygen 】コマンド――SSHの公開鍵と秘密鍵を作成する:Linux基本コマンドTips(327) – @IT
作業ログ
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/鍵ファイルの名前':