手当たり次第に書くんだ

飽きっぽいのは本能

CentOS 8 Windows から CentOS へ公開鍵認証を用いた SSH 接続

目次に戻る

概要

WindowsからCentOSに公開鍵認証を用いてSSHで接続します。WindowsのSSHクライアントはPuTTYを使用します。

前提条件

OS

CentOS Stream 8を使用します。

SELinux

有効です。無効にする場合はこちらを参照して下さい。

Firewalld

無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。

標準ポート番号

TCP:22 (SSH)

設定

Windowsで秘密鍵と公開鍵を作成

Windows10のPowerShell上で作業します。ssh-keygenを用いて秘密鍵と公開鍵を作成します。パスフレーズは無しの例となりますが、要件に応じてパスフレーズを設定して下さい。

PS C:\Users\myuser> cd C:\Users\myuser\.ssh
PS C:\Users\myuser\.ssh> ssh-keygen -t rsa -b 4096 -C "win.si1230.com"
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\myuser/.ssh/id_rsa): Enter
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in C:\Users\myuser/.ssh/id_rsa.
Your public key has been saved in C:\Users\myuser/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:3FTd3jMHeyajjwhmKb3JpxbaRR+HfeHEoa/64Xq4cAs windows.si1230.com
The key's randomart image is:
+---[RSA 4096]----+
|            ...o.|
|           .  ++.|
|          .  +o+o|
|       . o. o B+B|
|       .So.. + B+|
|      . B . o .  |
|       B E o.=   |
|      . * *.=.o  |
|       ..o ==o   |
+----[SHA256]-----+

上記の作業が終わると秘密鍵と公開鍵が作成されます。公開鍵は接続対象のCentOS上に配置します。

ファイルパス
秘密鍵 C:\Users\myuser/.ssh/id_rsa
公開鍵 C:\Users\myuser/.ssh/id_rsa.pub

CentOSに公開鍵を配置

rootユーザーへの接続を前提とします。公開鍵の情報は/root/.ssh/authorized_keysに書きます。下記の例ではauthorized_keysを新規に作成していますが、既に存在する場合はそれに追記すれば良いです。Windowsにはssh-copy-idコマンドが存在しないため、スマートではありませんがエディターを使用してWindowsからCentOSに貼り付けます。この作業はコンソールかパスワード認証のSSHとなります。

[root@centos ~]# mkdir /root/.ssh
[root@centos ~]# vim /root/.ssh/authorized_keys

C:\Users\myuser/.ssh/id_rsa.pubの内容を貼り付け

[root@centos ~]# chmod 600 /root/.ssh/authorized_keys

PowerShellのSSHクライアントから接続確認

ここまでの状態でPowerShellのSSHクライアントからは公開鍵認証でSSH接続が可能となっています。PowerShellのSSHクライアントもシンプルでとてもいいのですが、個人的に唯一の欠点がLinuxに接続した際の耐えかねる文字色の見づらさです。対処方法はいくつかあるようですが、どうもしっくりこなかったため、使用を断念しています。この問題さえなければPowerShellのSSHクライアントを使用したいので今後の改善に期待しています。

PS C:\Users\myuser\.ssh> ssh -l root 192.168.13.88
The authenticity of host '192.168.13.88 (192.168.13.88)' can't be established.
ECDSA key fingerprint is SHA256:DaC+Cvsw1vvIEh40b5JEkwdtGg7pqKBuy2PkD/42U4I.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.13.88' (ECDSA) to the list of known hosts.
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Tue Apr 27 18:47:40 2021 from 192.168.13.1
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Tue Apr 27 18:47:40 2021 from 192.168.13.1

PuTTYからSSH接続

まず、PowerShellのSSHクライアントの秘密鍵をそのまま使用できないため変換が必要です(PowerShellのSSHクライアントの秘密鍵:pem形式、PuTTYの秘密鍵:ppk形式)。下記の通り、PuTTYに付属するPuTTYgenでppk形式に変換可能です。尚、WinSCPではpem形式の秘密鍵を指定すると自動的にppk形式に変換してくれました。

  1. PuTTYgenを起動します。
  2. LoadでC:\Users\myuser/.ssh/id_rsa(pem形式の秘密鍵)を選択します。
  3. Save private keyでファイル名をid_rsa.ppk(任意)として保存します。パスフレーズは要件に応じて設定して下さい。

最後に、PuTTYで下記のPrivate key file for authenticationにC:\Users\myuser/.ssh/id_rsa.ppkを指定すれば、PuTTYから公開鍵認証でSSH接続が可能です。

Connection > SSH > Auth > Private key file for authentication

秘密鍵の変換に関する補足

本稿では、PowerShellのSSHクライアントで秘密鍵と公開鍵のペアを作成していますが、これは個人的にVisual Studio Codeのリモート接続で必要なるためで必須ではありません。また、PowerShellのSSHクライアントの秘密鍵をPuTTYgenでppk形式に変換していますが、PuTTYgenで個別の秘密鍵と公開鍵のペアを作りPuTTY用として管理しても良いです。この場合は管理対象のファイルが増えるのが難点です。

目次に戻る

CentOS 8 Windows から CentOS へ公開鍵認証を用いた SSH 接続

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る