このページの本文へ

Windows Info 第126回

Windows 10 RS4のSSHを理解する【サーバインストール編】

2018年05月13日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

 前回に続いて、今回はOpenSSHサーバを使えるようにする。

 インストール自体は簡単で、「設定」→「アプリ」→「アプリと機能」→「オプション機能の管理」から、「機能の追加」で「OpenSSHサーバー」をクリックして「インストール」ボタンを押すだけだ。

「設定」→「アプリ」→「アプリと機能」→「オプション機能の管理」を開く

「機能の追加」をクリック。開いたページで「OpenSSH サーバー」をクリックし、「インストール」ボタンを押す

 インストールが終わったら、スタートメニューから「Windows管理ツール」にある「サービス」を起動し、「OpenSSH SSH Server」を探して、右クリックから「プロパティ」を開く。「起動」ボタンを押せば、OpenSSHサーバが起動する。

スタートメニューでWindows管理ツールにあるサービスを起動する

「OpenSSH SSH Server」を探して、右クリックメニューから「プロパティ」を開く

 いつでもサーバにログインできるようにするには、「スタートアップの種類」から「自動」または「自動(遅延開始)」を選ぶ。

「スタートアップの種類」で「自動(遅延開始)」か「自動」を選択する

 この2つは、Windowsの起動後にすぐ起動されるか、少し時間をあけて起動されるかの違い。起動時間や起動時のCPU負荷を考慮するなら「自動(遅延開始)」を選ぶ。このとき、Windowsが起動してから1〜3分程度待たないとsshでのログインができない。ノートPCなど、バッテリへの影響が心配なら、「手動」のままとして、必要に応じて手動で起動させることもできる。

 このときには、同じく「サービス」を使うか、管理者としてコマンドプロンプトから、

sc start sshd

として手動で起動する。

 この状態で、OpenSSHクライアントであるssh.exeからパスワード認証を使ったログインが可能になる。SSHサーバ、クライアントの両方のマシンに同じユーザーアカウントがあるなら、

ssh.exe コンピューター名

で接続が可能だ。

 このとき聞かれるパスワードは、ユーザーアカウントのもので、Windowsのサインイン時につかうものだ(ただしPINは利用できない)。テストと次の作業の準備を兼ねて、サーバにログインしてみる。

ssh.exe serverPC

設定が終わったら、クライアントからログインして、ユーザーフォルダ以下に「.ssh」フォルダを作成する

 ログインできたら、サーバ側のユーザーフォルダがカレントフォルダになっているはずなので、mkdirコマンドを使って.sshフォルダを作成する。あるいはサーバ側のWindows Explorerで作成してもよい。もしすでにあれば作成する必要はない。

ユーザー認証鍵によるログイン

 ユーザーが認証鍵を作り、公開鍵をサーバ側に登録すれば、パスワード認証ではなく、よりセキュリティの高い公開鍵暗号による認証ができる。

公開鍵暗号を使う認証鍵によるログインでは、ssh-keygenコマンドで作成した公開鍵をサーバー側のauthorized_keysファイルに登録しておく

 前回の記事を参考に、クライアント側で認証鍵を作る。このとき、セキュリティを高めたり、複数の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)に公開鍵をコピーする。そのためのコマンドは、

sshを終了して、クライアント側からscpコマンドを使って公開鍵ファイル(id_rsa.pub)をサーバにコピーする

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コマンドで接続し、サーバ側でコピーしたファイルをauthorized_keysファイルに追記する

 これで、ssh.exeが一旦終了して接続が切れるので、こんどは、認証鍵による接続をさせる。同様に「ssh.exe コンピーター名」とすれば、再度サーバに接続する。今度は、パスワードではなくて、認証鍵を使ったときのパスフレーズを聞いてくるので注意すること。

ssh-agentによるパスフレーズの省略

 サーバ側に公開鍵を登録しただけだと、毎回パスフレーズを入力しなければならない。

秘密鍵をパスフレーズで暗号化していると毎回パスフレーズを入力しなければならない

 なので、ssh-agentサービスを使って、パスフレーズの入力を一回だけにする。ssh-agentは、秘密鍵をメモリ中に保持して必要に応じてssh.exeに提供する。一回設定すれば、次回Windowsを立ち上げ直すときまで有効である。

ssh-agentサービスを使うと、ssh-addコマンドで秘密鍵ファイルを登録するときだけパスフレーズを入力すればよくなる

 まずは、sshサーバと同じく、「サービス」を使って「OpenSSH Authentication Agent」を設定する。

再度「サービス」で、こんどは「OpenSSH Authentication Agent」のプロパティを使い、サービスを起動して自動起動を設定する

 スタートアップの種類は「自動」または「自動(遅延開始)のどちらかとし、手動でサービスを起動する。また、サービス名として「ssh-agent」を使ってSSHサーバと同じようにsc.exeコマンドでサービスを制御できる。

 サービスを起動したら、以下のコマンドで自分の秘密鍵を登録する。

ssh-add c:\users\user01\.ssh\id_rsa

 このとき、パスフレーズを入力する。ただし、一回入力したら、以後、Windowsを再起動するまでパスフレーズを入力する必要はない。ssh.exeを起動すれば、何も聞かずにサーバに接続できるはずだ。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン