MacからWindowsにSSH接続する方法
はじめに
GPUを積んだWindows PCを購入したので、GPUを使ってディープラーニングやりたい。。。
けど、開発はショートカットキーに慣れているMacでやりたい。。。
ということで、MacからWindowsにSSH接続することにしました。
手順
ホスト(Windows)側の作業: H
ゲスト(Mac)側の作業: G
- OpenSSHをインストール(H)
- ssh時のデフォルトのターミナルをbashに変更(H)
- sshd_configを編集(H)
- sshキーを作成(G)
- 公開鍵を登録(H)
- 公開鍵の権限を変更する(H)
- sshdを起動(H)
- sshで接続(G)
1. OpenSSHをインストール(H)
Windows + S
ボタンを押して、optional features
と検索して、下図のような設定を開く。
Add a feature
を押して、openssh
と検索すると、OpenSSH Server
なるものが出てくると思うので、それをインストールする。
2. ssh時のデフォルトのターミナルをbashに変更(H)
管理者権限でWindowsPowerShellを開いて、以下のコマンドでデフォルトのターミナルをbashに変更する。必要なければやらなくても良い。
wslのインストールが済んでない場合は、wslのインストールを先に行う。
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\bash.exe" -PropertyType String -Force
3. sshd_configを編集(H)
C:\ProgramData\ssh\sshd_config
を好きなエディタで開いて、最後の2行をコメントアウトしておく。
これがあると、administratorsのグループのアカウントは__PROGRAMDATA__/ssh/administrators_authorized_keys
を参照してしまう。
# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
4. sshキーを作成(G)
ゲスト側でターミナルを開いて、以下のコマンドでsshキーを作成する。
sshキーの作成方法の詳細については巷にあふれているので割愛。
ssh-keygen -t rsa -b 4096 -o -a 100
デフォルトの名前なら、~/.ssh
内に秘密鍵id_rsa
と公開鍵id_rsa.pub
が作成される。
5. 公開鍵を登録(H)
ゲストで作成した公開鍵をホスト側に登録する。
その際、id_rsa.pub
という名前を、authorized_keys
に変更する。
authorized_keys
の設置場所は、C:\Users\{user_name}\.ssh
の中。
6. 公開鍵の権限を変更する(H)
公開鍵は、初期状態の権限だとssh接続ができないので、権限を変更する必要がある。
権限の変更は以下の手順で行う。
-
authorized_keys
を右クリックして、Property -> Security -> Advanced
という順に進む。 -
Disable inheritance
をクリックする。 -
Convert inherited permissions into explicit permissions on this object" when prompted
をクリックする。 - SYSTEMとユーザーの権限を外す。
7. sshdを起動(H)
管理者権限でWindowsPowerShellを開いて、以下のコマンドを入力する。
Start-Service sshd
起動状態の確認は、以下のコマンドでできる。
Get-Service sshd
8. sshで接続(G)
ゲスト側でターミナルを開いて、以下のコマンドでssh接続を行う。
ssh user_name@host_ip_address
IPアドレスは、ネットワークのプロパティから確認できる。
追記: SSHがTimeoutする場合
SSH接続がタイムアウトする場合は、Windows側のポートが開いていない可能性があります。
ローカルのみで良いので、Firewallの設定から22番ポートを開けるようにして下さい。
参考
How to SSH into Windows 10?
Setting up OpenSSH for Windows using public key authentication
OpenSSH Server Configuration for Windows 10 1809 and Windows Server 2019
Discussion