🌐

MacからWindowsにSSH接続する方法

2021/08/31に公開

はじめに

GPUを積んだWindows PCを購入したので、GPUを使ってディープラーニングやりたい。。。
けど、開発はショートカットキーに慣れているMacでやりたい。。。

ということで、MacからWindowsにSSH接続することにしました。

手順

ホスト(Windows)側の作業: H
ゲスト(Mac)側の作業: G

  1. OpenSSHをインストール(H)
  2. ssh時のデフォルトのターミナルをbashに変更(H)
  3. sshd_configを編集(H)
  4. sshキーを作成(G)
  5. 公開鍵を登録(H)
  6. 公開鍵の権限を変更する(H)
  7. sshdを起動(H)
  8. 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を参照してしまう。

sshd_config
# 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接続ができないので、権限を変更する必要がある。
権限の変更は以下の手順で行う。

  1. authorized_keysを右クリックして、Property -> Security -> Advancedという順に進む。
  2. Disable inheritanceをクリックする。
  3. Convert inherited permissions into explicit permissions on this object" when promptedをクリックする。
  4. 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