はじめに
免責事項
本サイトおよび対応するコメントにおいて表明される意見は、投稿者本人の個人的意見であり、シスコの意見ではありません。本サイトの内容は、情報の提供のみを目的として掲載されており、シスコや他の関係者による推奨や表明を目的としたものではありません。各利用者は、本Webサイトへの掲載により、投稿、リンクその他の方法でアップロードした全ての情報の内容に対して全責任を負い、本Web サイトの利用に関するあらゆる責任からシスコを免責することに同意したものとします。
この記事はCisco Systems Japan Advent Calendar 2025の一記事として投稿しています。よろしければ、他のエンジニアのGeekな記事もぜひご覧になってください。
1.この記事を読むとどうなる?
・Windows端末で構築したWSLへのSSH接続方法がわかる!
・pyATSの試験等、Windows端末(WSL)にSSH接続して試験が可能になる!
2.pyATSとは?
pyATS(python Automated Systems)はCiscoが開発するpythonベースのテスト自動化ソリューションです。
現在はDevNetを通じて外部にも無料ツールとして公開されています。
従来は、検証や作業時にログを収集するところまではマクロ等で自動化できているものの結果の確認は目視で行うというやり方がまだまだ多いのではないでしょうか。pyATSの場合は、showコマンド等の結果が正常であるか異常であるかまでを判定することができる素晴らしい自動化ソリューションです。
・今からでも遅くない pyATS でネットワーク自動化入門 2021版
3.ユースケース
pyATSで、End-toーEndでの疎通試験を実施する以下のようなツールを使用しています。
(以下の構成は例です)

ここで問題なのが、試験端末の確保。ESXi等があれば仮想マシンを構築すれば容易である。
しかし、小規模の検証構成などではESXiを準備するまでもなかったり、そもそもESXiが手元になかったりすると、Windows端末しかないという状況がしばしば・・。
さらに、pyATSは現在のところWindows環境では動作せず、Windows端末で実施するならWSLを構築する必要があります。
そこで、大元の試験実行端末(PC1)から疎通試験の送信元であるWSL(PC2~PC4)へSSH接続を実現します。
SSH接続を実現するためにポートフォワーディングを設定します。
4.設定方法 -WSL編-
本項ではWSL側での設定方法を記します。
※本項はWSLでSSHを有効化する手順となりますので、ポートフォワーディングについては5項を参照ください。
(1)WSLにて次のコマンドを実行し、以下のファイルが存在することを確認します。
ls -l /etc/ssh
sudo ssh-keygen -A

(3)次のコマンドを実行し、赤枠のような ssh_host_〇〇.key や ssh_host_〇〇.key.pub というファイルが作成されていることを確認します。
ls -l /etc/ssh

(4)次のコマンドを実行し、OpenSSHサーバーをインストールします。
sudo apt install openssh-server
(5)次のコマンドを実行し、sshサービスを起動し、サービスが起動していることを確認します。
sudo service ssh restart
sudo service ssh status
5.設定方法 -Power Shell編-
本項ではPower Shell側での設定方法を記します。
(1)WSLが稼働しているWindows端末にて管理者喧伝でPower Shellを起動します。
(2)次のコマンドを実行し、ポートフォワーディングを設定します。
※WindowsのIPアドレス ・・・ 0.0.0.0等で大丈夫です。
netsh interface portproxy add v4tov4 listenaddress=<WindowsのIPアドレス> listenport=22 connectaddress=<WSLのIPアドレス> connectport=22
(3)次のコマンドを実行し、設定内容が正しいことを確認します。
netsh interface portproxy show v4tov4

(4)SSHは22番ポートを使って通信しますが、ファイアウォールでブロックされているため、22番ポートを開放する必要があります。次のコマンドで、ファイアウォールの22番ポートを開放します。
New-NetFireWallRule -DisplayName 'WSL 1 Firewall Unlock' -Direction Outbound -LocalPort 22 -Action Allow -Protocol TCP

(5)(4)はOutbound方向のFW設定です。次のコマンドでInbound方向のFW設定を行います。
New-NetFireWallRule -DisplayName 'WSL 1 Firewall Unlock' -Direction Inbound -LocalPort 22 -Action Allow -Protocol TCP

(6)次のコマンドを実行し、ファイアウォールの設定を確認します。
Get-NetFirewallRule -DisplayName 'WSL 1 Firewall Unlock' | Get-NetFirewallPortFilter | Format-Table

(7)Tera TermからSSH接続を実施することができました!

6.最後に
本記事で紹介した通りポートフォワーディングを設定することでWSLへSSH接続できます。
本記事がどなたかのお役に立てれば幸いです。
最後になりますが、昨今ネットワーク自動化に取り組む企業や人が多くなったのではないでしょうか。私もその1人で、ネットワーク自動化に日々一生懸命取り組んでいます。
ネットワーク自動化のプロフェッショナルとなれるようこれからも精進します。
7.参考リンク
・今からでも遅くない pyATS でネットワーク自動化入門 2021版
・WSL2 外部からWSL2のサービスに接続する

