wet-to-dry’s blog

京大大学院生の備忘録ブログ

研究室のPCにSSH接続する話

概要

研究室の自分のPCに出先(自宅など)からアクセスできれば、ラボにデータサーバーを作れてとても便利なのにな~と思っていたので、トライしてみます。

環境は

  • ラボPC (ノート型、Windows10、サーバー用) ※これはそのうち専用のサーバーPCを作る予定

  • 自宅用PC(ノート型、Windows10、クライアント用)

でやっています。

やったこと

このサイトを参考にして設定しました。

qiita.com

1. sshを入れる

windows10にはデフォルトでSSHサーバーおよびSSHクライアント機能が備わっている(はず)。

SSHクライアントは何もいじらずともすでに機能追加済みだったので、サーバーPC側でSSHサーバーの設定を行う。

Windowsマークの隣の検索バーから「option」と検索し、「オプション機能を追加する」をクリック。

f:id:wet-to-dry:20200319200123p:plain

次に、出てきた画面(設定:オプション機能)で「機能の追加をクリック」。

f:id:wet-to-dry:20200319200547p:plain

最後に、OpenSSHサーバーをインストール

f:id:wet-to-dry:20200319200656p:plain

これで、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
...

と出てうまく働かないので、以下のページを参考に直した。

chiyosuke.blogspot.com

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に変更する。

www.server-world.info

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接続できました!

あとがき

今日はここまで! また会いましょう!