Linux→Windows11にSSH公開鍵認証で接続する

に公開

はじめに

LinuxからWindowsへのSSH接続を環境設定含めてやってみました。

環境

Linux、Windowsの環境は以下の記事で作成した仮想環境を使用します。
https://zenn.dev/marogram/articles/d7244dc3192d7f
https://zenn.dev/marogram/articles/58163a05b3461d

また、WindowsのOpenSSHサーバーの有効化は以下の記事になります。
https://zenn.dev/marogram/articles/5ab3344fd0170f

事前準備(Windows/ホスト)

公開鍵認証で接続するため、Windows側で、sshd_configの項目を修正しておきます。
C:\ProgramData\ssh\sshd_configを開いて、以下のコメントアウトをはずしておきます。
(デフォルトでyesになっていますが、念の為)

sshd_config
PubkeyAuthentication yes

また、最後の行の以下をコメントアウトします。

sshd_config
#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

ファイルを保存したら、OpenSSHを再起動します。
(コマンドだと、Restart-Service sshd

※ 私はまだNWの設定ができていなかったため、以下の設定も追加しました。
VMWare Fusion > 仮想マシン > ネットワークアダプタ > ブリッジに変更
FireWallの設定

> New-NetFirewallRule -Name AllowICMPv4 -DisplayName "Allow ICMPv4" -Protocol ICMPv4 -Direction Inbound -Action Allow

上記を設定し、Linux側からPingコマンドを打って接続確認
合わせて以下の設定もしました。

# ファイアウォールでポート22を許可
> New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

手順1(Linux/クライアント)

Open-SSHが入っているか確認

$ ssh -V
OpenSSH_8.7p1, OpenSSL 3.2.2 4 Jun 2024

公開鍵・秘密鍵を作成

$ ssh-keygen -t rsa -b 4096
$ ls -l ~/.ssh
-rw------- 1 rocky rocky 3381 Aug 31 17:42 id_rsa
-rw-r--r-- 1 rocky rocky  743 Aug 31 17:42 id_rsa.pub

手順2(Windows/ホスト)

authorized_keysの作成

C:¥Users¥<ユーザー名>にauthorized_keysを作成し、Linuxのid_rsa.pubの内容を貼り付けます。

ipconfigコマンドでIPv4のアドレスを確認

> ipconfig
 IPv4 アドレス部分を確認
> whoami
 念の為ユーザー名も確認

手順3(Linux/クライアント)

ssh接続

以下のコマンドでssh接続してみます。

$ ssh -i ~/.ssh/id_rsa Windowsユーザー名@WindowsIPアドレス

接続できて、Windowsユーザー名@WINDOWS_11 C:\Users\<Windowsユーザー名>>が出たら成功です🎉

個人的メモ

① sshdプロセスが起動できなくなった
C:\ProgramData\ssh\logsを開いた際、権限変更してしまい、sshdが開始・再起動できなくなってしまいました。SYSTEM、Administrators以外のユーザーを削除したら、無事起動できました。
🌟 参考
https://soug-foobar.com/main/content?id=ab505cb0-9152-41ef-bc28-7de98744125f
② sshコマンドのオプションについて

# 詳細なログを確認したいとき
$ ssh -vvv -i ~/.ssh/id_rsa Windowsユーザー名@WindowsIPアドレス

# ポートを指定したいとき
$ ssh -p 2222 -i ~/.ssh/id_rsa Windowsユーザー名@WindowsIPアドレス

まとめ・感想

無事接続できてよかったです!ネットワーク関係はやはりつまずくので、これからも勉強が必要だと感じました。

Discussion