Windows 10 で OpenSSH サーバーを立ち上げて、外部から SSH ログインできるようにします。
目次
Windows 10 には、SSH クライアントが標準でインストールされています。また、SSH サーバーも Windows の設定から簡単に追加できます。
この記事は、Windows 10 PC に OpenSSH サーバーをインストールして、外部からこの PC に SSH ログインできるようにします。
OpenSSH サーバーの機能を追加する
設定の『アプリ』から、『アプリと機能』の『オプション機能』を選択。『機能の追加』を選択し、『OpenSSH サーバー』をインストールします。
インストールが完了したら、PowerShell を管理者権限で起動します。
以下のコマンドで、SSH サーバーのサービスを起動します。
powershell💩Start-Service sshd
サービスの自動起動を設定します。
Set-Service -Name sshd -StartupType Auto
Windows のファイアウォールの設定をします。22番ポート経由の SSHサーバーへのアクセスを有効にします。
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName "sshd"
以上で OpenSSH サーバーが有効化されました。以下に示すように、SSH コマンドでろぐいんできます。ユーザー名は Windows のユーザー名、IP アドレスは ログイン先の Windows PC の IP アドレス(ipconfig
で調べられる)、パスワードはログインパスワードです(ローカルアカウントの場合)。
ssh ユーザー名@192.168.X.X
Windows に SSH 接続すると、コマンドプロンプトが起動します。ログインシェルを PowerShell に変更することもできるそうです。
公開鍵認証でログインできるようにする
鍵を作成する
公開鍵認証も使えます。接続元(SSH コマンドで Windows マシンに接続しようとする側)で、秘密鍵と公開鍵のペアを作成します。既に鍵が作成済みであれば、この作業は不要です。
鍵の有無は次の方法で確認できます。Unix 系の OS の場合、以下のコマンドを入力して、id_rsa.pub
や id_ecdsa.pub
といったファイルが存在すれば、それが公開鍵ですので、新たに作成する必要はありません。Windows の場合も、C:\Users\ユーザー名\.ssh
を確認すればわかります。
ls -la ~/.ssh
公開鍵が存在しない場合は、作成する必要があります。以下のコマンドで作成できます。
ssh-keygen -t ecdsa
途中、鍵のペアを保存する場所や、パスフレーズの入力が求められますが、基本的に Enter を連打してスキップすれば大乗です。パスフレーズが設定されるとログインの度にパスフレーズの入力が必要となります。
鍵のペアが、~/.ssh
C:\Users\ユーザー名\.ssh
に作成されました。id_ecdsa
が秘密鍵で、id_ecdsa.pub
が公開鍵です。
公開鍵を登録する
まず、先ほど作成した公開鍵を、何らかの方法で接続先の Windows PC に公開鍵をコピーします。公開鍵は .pub
の方です。
次からの作業は、OpenSSH サーバーをインストールした接続先の Windows PC でおこないます。
まず、転送した公開鍵を administrators_authorized_keys
という名前に変更します。拡張子はナシです。
次に、その administrators_authorized_keys
を C:\ProgramData\ssh
フォルダに移動させます。
管理者権限が必要と言われますが続行します。
コピーした administrators_authorized_keys
のアクセス権限を変更します。
administrators_authorized_keys
を右クリックして『プロパティ』を選択。
『セキュリティ』のタブを選択。『詳細設定』を選択。
『アクセス許可の変更』を選択。
『継承の無効化』を選択。
『継承されたアクセス~』を選択。
『Authenticated Users』を選択し『削除』
『OK』を押して押してプロパティを閉じます。
以上で、公開鍵の登録は完了です。
以後、公開鍵を追記したい場合は、VScode などのテキストエディタを管理者として起動し、C:\ProgramData\ssh\administrators_authorized_keys
を直接編集すれば良いと思います。