表題を実現する手順をまとめました。
★やりたいこと
デスクトップPCのホストOS→ゲストOSのSSH接続はteratermマクロを通じてできている状態だが、これをノートPCからもデスクトップPC内の同じリソースにSSHでアクセスできるようにしたい。
ここではLAN内での接続になります。ゆくゆくはLAN外、すなわちカフェや図書館などからでも家のPCのリソースにアクセスできるようにしていきたい所存。
目次
- 構成
- ファイアウォールの許可設定
- ping疎通確認
- teratermマクロの変更
1. 構成、前提条件
構成は以下。
teratermマクロのコード内容は以下。一つのPC内でのホストOSからゲストOSへのSSH接続の処理。
;; 接続先情報
HOSTADDR = '127.0.0.1' ; localhost
USERNAME = 'username' ; ユーザー名
PASSWORD = 'password' ; パスワード(要変更)
SUDO_PASSWORD = 'sudopassword' ; sudo用のパスワード
PORTNUM = '2222' ; SSHポート番号;; コマンド組み立て
COMMAND = HOSTADDR
strconcat COMMAND ':'
strconcat COMMAND PORTNUM
strconcat COMMAND ' /ssh /2 /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD;; SSH接続
connect COMMAND;; 接続後のプロンプト待機
wait '$';; sudo su コマンド実行
sendln 'sudo su';; パスワードプロンプトを待機
wait '[sudo] password for'
wait ':';; sudoパスワード送信
sendln SUDO_PASSWORD
ゲストOS(Virtual Box)のネットワーク設定は以下。
インタフェース名 | 割り当て | IPアドレス |
---|---|---|
enp0s3 | NAT | 10.0.2.15/24 |
enp0s8 | ホストオンリーアダプタ | 192.168.56.103 |
enp0s3にて、以下ポートフォワーディングルールを適用している。
2. ファイアウォールの許可設定
デスクトップPC(ゲストOSを持つPC)からPowerShellを管理者権限で開き、以下コマンドでポート2222(ssh用のポート)を許可させるよう設定する。
New-NetFirewallRule -Name "Allow SSH 2222" -DisplayName "Allow SSH 2222" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 2222
3. ping疎通確認
Windowsの場合、デフォルトでOSにファイアウォールの設定があるため通常はPC間はpingは届かない。かつ、平常時はpingは届かなくて問題ないが、データが届く状態にあるかを確認するために行う。
以下にて、ファイアウォールを無効化し、ping疎通を確認(ping疎通確認後に有効に戻す)
4. teratermマクロの変更
接続先のIPアドレスをループバックアドレスから接続先PCのIPアドレスに変更。
;; 接続先情報
HOSTADDR = '192.168.0.11' ;
以上。