「Windows 10」がシステム管理者にとって、役立つUNIX/Linuxプラットフォームになりつつある。まず、「Windows Subsystem for Linux」が「Windows 10 Fall Creators Update」に組み込まれた。そしてMicrosoftはついに、「Windows 10 April 2018 Update」で「Secure Shell(SSH)」にネイティブで対応した。
ここまでの道のりは長かった。Microsoftはユーザーの要望に押されて2015年に、OpenSSHを「PowerShell」でサポートする取り組みを開始している。
これでようやく、SSHサーバが動作するシステムに接続する際に、「PuTTY」などのサードパーティーのSSHクライアントが不要になった。OpenSSHには、さまざまなクライアント/サーバ関連のユーティリティが揃っている。それにより開発者とシステム管理者は、OpenSSHサーバが稼働しているシステムで、リモートログイン、リモートファイル転送、公開鍵/秘密鍵ペア管理を安全に行える。
OpenSSHは「BSD」「Linux」「macOS」「UNIX」で使用されることが多いが、Windows 10を含め、あらゆるプラットフォームで利用できる。この特に人気の高いSSHクライアントおよびサーバのインプリメンテーションは、「OpenBSD」プロジェクトによって開発されている。
最新のWindows 10アップデートにはOpenSSHの最新のクライアント版「OpenSSH 7.7」が標準搭載されている。OpenSSHサーバも利用可能だが、各自がインストールせねばならない。
このコマンドラインによるインタフェースプログラムの詳しい使い方については、OpenSSHのマニュアルを参照していただきたい。最も一般的な用途は、リモートサーバへの接続だろう。パスワードを設定している場合は、下記のコマンドを実行する。
ssh [user]@[host]
SSHサーバに初めて接続する場合は、ホスト鍵の指紋(fingerprint)が表示され、接続したいか尋ねられる。「yes」と回答すると、不可視ファイルの「%UserProfile%\.ssh\known_hosts」にホスト鍵が保存され、次に接続する時は尋ねられない。
次に、リモートサーバのユーザーアカウントのパスワードを入力する。それが済むと、リモートサーバへのログインが完了し、プログラムをしたり、システム管理者ツールを利用したりできる。
作業が完了したら「exit」を入力する。「Connection to [server] closed」というメッセージが表示されるはずだ。これで、ローカルのコマンドプロンプトに戻ったことになる。
しかし、鍵ベースの認証の方が安全だ。そのためには、まずクライアントの公開鍵/秘密鍵のペアを生成する必要がある。PowerShellもしくはcmdで、「ssh-keygen」を使って鍵ファイルを生成すればよい。以下のコマンドを使う。
cd ~\.ssh\ssh-keygen
筆者のシステムの場合、以下のように出力される。
Generating public/private ed25519 key pair.Enter file in which to save the key (C:\Users\sjvn\.ssh\id_ed25519):
「ED25519」は、OpenSSHが現在、安全な接続を確立するために使用している公開鍵署名システムだ。そして、秘密鍵ファイルを暗号化するために、パスフレーズを使用するように促される。生成されたファイルのうち、末尾に「.pub」があるのは公開鍵で、そのほかは秘密鍵となる。
次に、公開鍵(~\.ssh\id_ed25519.pub)をリモートサーバの「~\.ssh\」という名のディレクトリのテキストファイル「authorized_keys」に移さねばならない。
秘密鍵はパスワードのようなものだ。きちんと保護しよう。Windowsの場合、管理者として「ssh-agent」サービスを利用し、「ssh-add」を使って秘密鍵を保存すればよい。そうすると認証で必要な時に、ssh-agentが自動的に取得して、OpenSSHに渡してくれる。
設定が完了すると、リモートサーバに安全にログインして、ファイル転送が行える。これでリモートのUNIX/Linuxシステムで作業する準備が完了した。存分にお楽しみあれ。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。