1. HOME
  2. ブログ
  3. ナレッジ
  4. 秘密鍵・公開鍵によるssh接続

BLOG

ブログ

ナレッジ

秘密鍵・公開鍵によるssh接続

SSH (Secure Shell)

CentOS: 8.3.2011
OpenSSH_8.0p1, OpenSSL 1.1.1g FIPS 21 Apr 2020
Windows 10 Home 20H2 ビルド19042.1288

ここまでの仮想マシン(ゲストOS:CentOS)での操作は古くはTeraTermやPuttyを使う方が多いと思います。最近はGit Bashを使うことも多いです。現在のWindows10 PowerShellにもsshが備わりました。今回は、ホストOSであるWindows10のPowerShellで秘密鍵・公開鍵によるゲストOS:CentOSへのssh接続の手順です。
 スタートメニュー > Windows PowerShell を起動します。

Windows 10 Home 20H2 ビルド19042.1288

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\taro> ssh -V
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2

新規に秘密鍵・公開鍵を生成します。

PS C:\Users\taro> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\taro/.ssh/id_rsa): C:\Users\taro/.ssh/cent_rsa
Enter passphrase (empty for no passphrase):エンター
Enter same passphrase again:エンター
Your identification has been saved in C:\Users\taro/.ssh/cent_rsa.
Your public key has been saved in C:\Users\taro/.ssh/cent_rsa.pub.
The key fingerprint is:
SHA256:yTJty+0qGC4wABj65FFWNPJbNaOux6QUWTZFSacq9dM taro@DESKTOP-AOL6ONH
The key’s randomart image is:
+—[RSA 3072]—-+
|o. +o+ ++B.. |
|+ o o = +.= |
|o o + + . |
|.+ . O + . |
|. o * S o E |
|o .. @ o . |
| o . oo = . |
| . o .. . |
| . …. |
+—-[SHA256]—–+

 図のようにホームディレクトリ(「~/」=「C:\Users\taro/」)の「.ssh」ディレクトリにテキストファイルの秘密鍵「cent_rsa.」と公開鍵「cent_rsa.pub」が生成されます。接続先の異なるホストで使いまわすこともできますが、別々に管理するのでしたらホストを識別できる名称を使うとよいです。
 公開鍵「cent_rsa.pub」を表示させ、メモ帳などにコピーします。この1行が公開鍵です。

PS C:\Users\taro> cat C:\Users\taro\.ssh\cent_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDqm7GPbRafClkoYgc/BXRRmxz4eiYTtiw336tmPX5UrQcdUF2BYwcIntdok3bTYPKSz5f3VWItMGgQhcn1S+UkDWOv6Otq9w3oln1kmwtUM0zXqjTBlb5dMLLNVvAmI47Gawic67gGGi6K4fadvyiMiil5Py23uSO/gVjk3Tyywpcn3+6C2dCSOJNWoWzPW9+dOeWBoAKW5THepvmDbstjKrnfY3yBcO+Kv/QDFqJAg4bMIBrNF759kZ0vnODe6H0oQK6zfKFCmfd6AqlnXjdcq4E52TEufKQn2dFnPqgJJwuMslrtp13nmLjBPsVHoOQKdBAWTKfN7M3UlZLD0Qznx+KzmhM1aBBInhJiwOpDUkIku0iU0r7chGcVZEplQLtzIBOeZb+kqCu5lO2f54LvaQjy29fPfsmmDwqpPq4PMHd96g2b9ER9TyQjfPQMFWeUoa2Tgx3XhNJJoeONbjsm5kreds4IGs+h6uixK6rLnobCALoUTWRScoJJ24Dp44c= taro@DESKTOP-AOL6ONH

 ここからゲストOS:CentOSでの操作です。上記で生成した公開鍵を接続先のゲストOS:CentOSに配置します。
 ホームディレクトリ(「~/」=「/home/wanko/」)に「.ssh」ディレクトリを作ります。

$ mkdir ~/.ssh

「.ssh」内の「authorized_keys」ファイルに上記で生成した公開鍵を追記します(viエディタの最低限の使い方はこちら)。

$ vi ~/.ssh/authorized_keys

ログインユーザー以外のアクセスをを禁止します。

$ chmod -Rf go-rwx ~/.ssh

これでホストOS:Windows10のPowerShellから秘密鍵・公開鍵によるゲストOS:CentOSへのssh接続の準備が出来ました。
ホストOS:Windows10のPowerShellで秘密鍵を指定してゲストOS:CentOSへのssh接続してみます。

PS C:\Users\taro> ssh -i ~/.ssh/cent_rsa wanko@192.168.73.14

パスワードを尋ねられなかったはずです。実運用では最低限マストの常識です。接続先で秘密鍵・公開鍵を生成することもできますがその場合、第三者に知られないよう安全に接続元へ秘密鍵を渡さなければならないので注意してください。
good job!

関連記事