Windows 間でSSH 通信を行うための手順
Windows同士で公開キー認証によるssh接続をするための設定方法を解説します。
接続元の設定
予めsshdとssh-agentを自動起動に設定
PowerShell(管理者)
set-service sshd -startuptype automatic
set-service ssh-agent -startuptype automatic
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行をコメントアウトする必要があります。
上記の作業が終わったら公開キーを削除します
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 | 登録されている全ての鍵を削除 |