前回に続いて、今回はOpenSSHサーバを使えるようにする。
インストール自体は簡単で、「設定」→「アプリ」→「アプリと機能」→「オプション機能の管理」から、「機能の追加」で「OpenSSHサーバー」をクリックして「インストール」ボタンを押すだけだ。
インストールが終わったら、スタートメニューから「Windows管理ツール」にある「サービス」を起動し、「OpenSSH SSH Server」を探して、右クリックから「プロパティ」を開く。「起動」ボタンを押せば、OpenSSHサーバが起動する。
いつでもサーバにログインできるようにするには、「スタートアップの種類」から「自動」または「自動(遅延開始)」を選ぶ。
この2つは、Windowsの起動後にすぐ起動されるか、少し時間をあけて起動されるかの違い。起動時間や起動時のCPU負荷を考慮するなら「自動(遅延開始)」を選ぶ。このとき、Windowsが起動してから1〜3分程度待たないとsshでのログインができない。ノートPCなど、バッテリへの影響が心配なら、「手動」のままとして、必要に応じて手動で起動させることもできる。
このときには、同じく「サービス」を使うか、管理者としてコマンドプロンプトから、
sc start sshd
として手動で起動する。
この状態で、OpenSSHクライアントであるssh.exeからパスワード認証を使ったログインが可能になる。SSHサーバ、クライアントの両方のマシンに同じユーザーアカウントがあるなら、
ssh.exe コンピューター名
で接続が可能だ。
このとき聞かれるパスワードは、ユーザーアカウントのもので、Windowsのサインイン時につかうものだ(ただしPINは利用できない)。テストと次の作業の準備を兼ねて、サーバにログインしてみる。
ssh.exe serverPC
ログインできたら、サーバ側のユーザーフォルダがカレントフォルダになっているはずなので、mkdirコマンドを使って.sshフォルダを作成する。あるいはサーバ側のWindows Explorerで作成してもよい。もしすでにあれば作成する必要はない。
ユーザー認証鍵によるログイン
ユーザーが認証鍵を作り、公開鍵をサーバ側に登録すれば、パスワード認証ではなく、よりセキュリティの高い公開鍵暗号による認証ができる。
前回の記事を参考に、クライアント側で認証鍵を作る。このとき、セキュリティを高めたり、複数のPCで利用するなら作成時にパスプレーズを指定することを“強く”お勧めする。このパスフレーズは、秘密鍵を保護するためのもので、パスフレーズを指定することで、秘密鍵ファイルの中身が暗号化され、パスフレーズを知らないと秘密鍵を利用できなくなる。
万一、ノートPCなどに秘密鍵を入れたまま紛失したような場合、設定したサーバすべてに侵入を許すことになる可能性がある。なお、パスフレーズを指定しないと、利用時にパスフレーズを聞かれることがなくなり、手順が簡単になるが、後述するssh-agentサービスを使うことで、システム起動直後の一回のみパスフレーズを入力するだけで済むようになるので、後述の手順と合わせ、できれば、パスフレーズを指定してほしい。
ユーザー認証鍵は、ssh-keygenコマンドで作成する。認証鍵は、デフォルトでは、ユーザーフォルダの下の「.ssh」フォルダに作られる。コマンドプロンプトを開き、以下のコマンドを使う。詳細については前回の記事を参照してほしい。
ssh-keygen -t rsa
なお、以後の説明では、認証鍵は、ユーザーフォルダ以下の.ssh(%userprofile%\.ssh)にあることを前提としている。
認証鍵は秘密鍵が「id_rsa」に、公開鍵が「id_rsa.pub」に格納されている。この公開鍵をサーバ側に登録することで、公開鍵暗号によるユーザー認証ができる。このためには、公開鍵をサーバ側にコピーする必要がある。これには、scp.exeコマンドを使う。
scp.exeは、sshで接続可能な場合にファイルのコピーを行うコマンドだ。sshでログインできる相手ならば、scp.exeコマンドでコピーできる。これを使ってサーバ(serverPC9)に公開鍵をコピーする。そのためのコマンドは、
scp.exe c:\users\user01\.ssh\id_rsa.pub serverPC:c:\users\user01\.ssh\clinetPC.pub
※サーバ側にも.sshフォルダが存在してることが前提
次にサーバ側で作業する。そのためにssh.exeコマンドでサーバに接続する。
ssh.exe serverPC
type clientPC.pub >> authorized_keys
exit
これで、ssh.exeが一旦終了して接続が切れるので、こんどは、認証鍵による接続をさせる。同様に「ssh.exe コンピーター名」とすれば、再度サーバに接続する。今度は、パスワードではなくて、認証鍵を使ったときのパスフレーズを聞いてくるので注意すること。
ssh-agentによるパスフレーズの省略
サーバ側に公開鍵を登録しただけだと、毎回パスフレーズを入力しなければならない。
なので、ssh-agentサービスを使って、パスフレーズの入力を一回だけにする。ssh-agentは、秘密鍵をメモリ中に保持して必要に応じてssh.exeに提供する。一回設定すれば、次回Windowsを立ち上げ直すときまで有効である。
まずは、sshサーバと同じく、「サービス」を使って「OpenSSH Authentication Agent」を設定する。
スタートアップの種類は「自動」または「自動(遅延開始)のどちらかとし、手動でサービスを起動する。また、サービス名として「ssh-agent」を使ってSSHサーバと同じようにsc.exeコマンドでサービスを制御できる。
サービスを起動したら、以下のコマンドで自分の秘密鍵を登録する。
ssh-add c:\users\user01\.ssh\id_rsa
このとき、パスフレーズを入力する。ただし、一回入力したら、以後、Windowsを再起動するまでパスフレーズを入力する必要はない。ssh.exeを起動すれば、何も聞かずにサーバに接続できるはずだ。
この連載の記事
-
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る - この連載の一覧へ