Windows

>

Windows 間でSSH 通信を行う

Windows 間でSSH 通信を行うための手順

Windows同士で公開キー認証によるssh接続をするための設定方法を解説します。

接続元の設定

予めsshdとssh-agentを自動起動に設定

PowerShell(管理者)

set-service sshd -startuptype automatic
set-service ssh-agent -startuptype automatic

まずはパスワード認証によるssh接続をしてみます。
これには接続先コンピューターのユーザー名、IPアドレスかホスト名(コンピューター名)、ログインパスワードが判っているのが前提となります。

ssh 接続先ユーザー名@接続先IPアドレス

あるいは

ssh 接続先ユーザー名@接続先コンピューター名

フィンガープリントの受け入れを聞いてくるので yes → Enter
パスワードを聞いてくるのでパスワード入力 → Enter で、接続先のユーザーフォルダに切り替わったら、パスワード認証による接続は OK です。

一旦、接続元に戻る

exit

この時点で接続元コンピューターのユーザーフォルダに .ssh フォルダが作成され、中に ホスト情報が記述された known_hosts ファイルが作成されます。
 

公開キー認証の設定

公開鍵認証を用いることで面倒なパスワード入力が不要となり、より簡単に接続できるようになります。
一連の作業は引き続きPowerShell(管理者)で行います。
上記のパスワード認証による接続でユーザーフォルダ内に .ssh フォルダが作成されるので、その中で作業を行います。

.ssh へ移動

cd c:\users/ユーザー名/.ssh

秘密キーと公開キの作成(-f オプションでキー名を指定)

ssh-keygen -f pc1_rsa

パスフレーズ入力を求められます。入力した場合はキー認証であってもパスフレーズの入力が求めれることになります。セキュリティ的には推奨ですが、未入力でEnterを2回空打ちでも構いません。その場合は接続時に何の入力も求めらずに接続することが出来ます。
上記の作業で pc1_rsa(秘密キー)と pc1_rsa.pub(公開キー)が .ssh フォルダ内に作成されます。

pc1_rsa(秘密キー)と pc1_rsa.pub(公開キー)が作成されていることを確認

ls

Out

2025/01/10  20:35    <DIR>          .
2025/01/10  20:40    <DIR>          ..
2024/12/23  08:36               764 known_hosts
2025/01/10  20:26               399 pc1_rsa
2025/01/10  20:26                91 pc1_rsa.pub

キーエージェントにpc1_rsa(秘密キー)を追加

ssh-add pc1_rsa

 

接続の簡略化

.ssh/ にconfigファイルを作成します。

vim config

下記内容を記述

Host pc2 // (接続名(任意))
HostName pc2-PC // (接続先のコンピューター名)
User pc2 // (接続先のユーザー名)
Port 22 // (接続に使用するポート番号)
IdentityFile ~/.ssh/pc1_rsa // (接続元の秘密キーまでのパス)

上記の内容で保存

:wq

これで接続先の設定が済んだら下記コマンドで接続できるようになります

ssh pc2

接続先コンピューターに pc1_rsa.pub を転送

scp pc1_rsa.pub 接続先ユーザー名@接続先コンピューター名:.ssh

 

接続先の設定

接続先コンピューターにssh接続

ここではまだパスワード認証による接続になります

ssh 接続先ユーザー名@接続先コンピューター名

.sshに移動

cd ~/.ssh

pc1_rsa.pub(公開キー)が届いていることを確認

ls

pc1_rsa.pub(公開キー)の内容をauthorized_keysに追加

type pc1_rsa.pub >> authorized_keys

authorized_keysが存在しない場合は自動的に作成されます。

C:\ProgramData\sshにコピーを置く

authorized_keysをadministrators_authorized_keysのファイル名でコピーを送ります

cp authorized_keys C:\ProgramData\ssh\administrators_authorized_keys

administrators_authorized_keysではなく、.ssh/authorized_keysの方を機能させるならC:\ProgramData\ssh\sshd_configの最終2行をコメントアウトする必要があります。

administrators_authorized_keys

上記の作業が終わったら公開キーを削除します

del pc1_rsa.pub

sshdを再起動

restart-service sshd

接続元のコマンドラインに戻ります

exit

下記コマンドで接続

ssh pc2

パスワード入力を求められずに接続出来たら成功です。
上の手順を接続先でも行えばWindwos同士で公開キー認証による接続が可能となります。
 
 

既存の秘密キーから公開キーを作成

誤って公開キーを削除してしまった時などは秘密キーを基に公開キーを作り直すことができます

ssh-keygen -y -f pc1_rsa > pc1_rsa.pub

 

ssh-add -l 登録されている鍵のFingerprints一覧を表示
ssh-add -L 登録されている鍵の公開鍵一覧を表示
ssh-add -d [秘密鍵へのパス] 登録されている鍵を削除
ssh-add -D 登録されている全ての鍵を削除