概要
研究室の自分のPCに出先(自宅など)からアクセスできれば、ラボにデータサーバーを作れてとても便利なのにな~と思っていたので、トライしてみます。
環境は
ラボPC (ノート型、Windows10、サーバー用) ※これはそのうち専用のサーバーPCを作る予定
自宅用PC(ノート型、Windows10、クライアント用)
でやっています。
やったこと
このサイトを参考にして設定しました。
1. sshを入れる
windows10にはデフォルトでSSHサーバーおよびSSHクライアント機能が備わっている(はず)。
SSHクライアントは何もいじらずともすでに機能追加済みだったので、サーバーPC側でSSHサーバーの設定を行う。
Windowsマークの隣の検索バーから「option」と検索し、「オプション機能を追加する」をクリック。
次に、出てきた画面(設定:オプション機能)で「機能の追加をクリック」。
最後に、OpenSSHサーバーをインストール
これで、SSHサーバー側の設定は終了!
2. ポート開放
参考にしたサイトには、管理者権限で22ポートを開放させよと書いてあります。
windowsのファイアウォールを確認したところ、OpenSSHサーバーアプリは通ってそうだったのですが、とりあえずおまじないとしてやっておきます。
netsh advfirewall firewall add rule name="sshd" dir=in action=allow protocol=TCP localport=22
3. sshdを起動
サーバー側PCで、管理者権限でWindows PowerShellを起動させ、
Start-Service sshd
でサービス起動
Set-Service sshd -StartupType Automatic
で自動起動設定(?)にする
一旦PCを再起動。。。
sshdも再起動しようと思ってRestart-Service sshdと打つと、
Could not load host key: __PROGRAMDATA__\\ssh/ssh_host_rsa_key ...
と出てうまく働かないので、以下のページを参考に直した。
githubから、FixHostFilePermissions.ps1をダウンロードし、PowerShellで実行
→結構うまくいってそうだった。とりあえずsshd打った時に出てきた
Could not load host key: __PROGRAMDATA__\\ssh/ssh_host_rsa_key ...
とかはなくなった。
4. 接続
ここまで来て、確認のためサーバーPCのWindows PowerShellから
ssh ユーザー名@サーバーIP
と打つと(サーバーIPはネットワークと共有センターなどから調べられるIPv4アドレスってやつ)
The authenticity of host '---.--.--.-- (---.--.--.--)' can't be established. ECDSA key fingerprint is ---------------------------------------------------------------. Are you sure you want to continue connecting (yes/no)?
と聞かれるので、yesと答える
すると、
ユーザー名@サーバーIP's password:
と聞かれるので、PCのパスワードを入れる。
すると、いい感じでSSH接続されることがわかる
Microsoft Windows [Version 10.0.18363.720] (c) 2019 Microsoft Corporation. All rights reserved. ユーザー名@PC名 C:\Users\ユーザー名>
ただ、ここで何かしらのコードを打つと文字化けしてしまう、、、
文字化けは原因がわからなかったので、いったん置いておく。
また、PowerShellのコードを打つとエラーになる
以下の記事のように、デフォルトではPowerShellではなくコマンドプロンプトが起動するらしいので、PowerShellに変更する。
PowerShellを管理者として実行し、
# powershell コマンドの PATH 確認 Get-Command powershell | Format-Table -AutoSize -Wrap CommandType Name Version Source ----------- ---- ------- ------ Application powershell.exe 10.0.18362.1 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe # OpenSSH のレジストリーエントリーに DefaultShell=PowerShell を設定 # PowerShell の PATH は上で確認した PATH を指定する PS C:\Users\Administrator> New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force DefaultShell : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE PSChildName : OpenSSH PSDrive : HKLM PSProvider : Microsoft.PowerShell.Core\Registry
以上記事からのコピペを実行した結果
これで、ssh接続した際にPowerShellコマンドを打つことができるようになった。
2020/03/23 追記
この後一応、京大のlocalネットにつないだクライアントPCからはssh接続できました!
あとがき
今日はここまで! また会いましょう!