これまで2回に渡り、WindowsへOpenSSHを使ってリモートログインする方法を説明してきた。WindowsにはOpenSSHサーバの機能が用意されているので、この機能を有効化していくつか設定を行えば、WindowsにOpenSSH経由でリモートログインできるのだ。逆に、WindowsにはOpenSSHクライアントの機能も用意されている。今回は、WindowsからほかのホストへOpenSSH経由でリモートログインする方法を説明する。
WindowsをOpenSSHクライアントとして使う
LinuxサーバやMacへのリモートログインにはOpenSSHを使うことが多い。そのため、Windowsにも何らかのかたちでOpenSSHクライアントをインストールして使ってる方が多いと思う。各アプリケーションのシェアはわからないが、ターミナルアプリケーションが持っているSSH機能を使ってリモートログインしたり、専用のSSHクライアントを使ったり、拡張機能を使ったり、WSLのOpenSSHを使ったり……と、いろいろな方法を使っているのではないだろうか。
あくまでもこうした方法の内の一つということになるが、ここではWindows 11やWindows 10にデフォルトで備えられているOpenSSHクライアントを有効化して使う方法について解説していく。
Microsoftは、デフォルトのターミナルアプリケーションとしてWindows Terminalを設定できるようにした。今後、「Windows 10のデフォルトターミナルはWindows Terminal」ということでほぼ確定すると考えられる。当然、デフォルトのシェルはPowerShell 7になる。そうなると、SSHクライアントとしてはデファクトスタンダードのOpenSSHをそのまま使うほうが良いだろう。MicrosoftはWindows 11やWindows 10に最初からOpenSSHクライアントを使う機能を統合しているので、当然、この機能を使ってOpenSSHをインストールする方法が説明される機会が増えるはずだ。
WSL2やMSYS2といったソフトウエア経由でOpenSSHクライアントを使うこともできるのだが、こちらはWSL2やMSYS2をアンインストールすると使えなくなる。例えば、認証鍵と設定をWSL2の環境に保持していた場合、WSL2の環境を削除すると消えてしまう。MSYS2のOpenSSHを使っているのなら、MSYS2をアンインストールすると当然ながら使えなくなる。リモートログインするための基本的なツールであるだけに、Windowsが提供している基本的な機能としてのOpenSSHクライアントを使っておくと、何かと問題となるケースを避けやすいのだ。
OpenSSHクライアントの有効化方法
OpenSSHクライアントの有効化は、設定アプリケーションで行う。Windows 11であれば、設定アプリケーションを起動し、「アプリ」→「オプション機能」→「オプション機能を追加する」の「機能を表示」を選択する。
オプション機能一覧から「OpenSSHクライアント」にチェックを入れ、「次へ」→「インストール」を選択してインストールを行う。
インストールが完了すると次のように「インストールされている機能」の一覧に「OpenSSHクライアント」が表示される。
Windows 10でのOpenSSH有効化手順もほぼ同じだ。ラベル名が多少異なるが、ほぼ同じ要領でインストールすることができる。
認証鍵の生成と公開鍵の設置
次に、Windowsで認証鍵を生成し、公開鍵のほうをリモートログイン先へ登録していく。この作業を行うことでリモートログインできるようになる(認証鍵を使わないパスワード認証はやめておこう。認証鍵を使う方法を基本的な手段だと考えておきたい)。
ssh-keygen.exeコマンドで認証鍵を生成する。
ssh-keygen.exe
上記を実行すると次のようになる。
なお、途中で入力を求められる「パスフレーズ」というのは、秘密鍵にかけられるパスワードのようなものだ。パスフレーズを設定しておくと秘密鍵が窃取された場合などに時間稼ぎをすることができる。パスフレーズを設定しないこともできるので、どちらを選ぶかは求められるセキュリティレベルに合わせてもらえればと思う。
デフォルトのまま実行した場合、$HOME/.ssh/id_rsaと$HOME/.ssh/id_rsa.pubという2つのファイルが生成される。id_rsaが秘密鍵、id_rsa.pubが公開鍵だ。
この公開鍵の中身をリモートログインするホストの~/.ssh/authorized_keysファイルへ追記していく。公開鍵は1行の文字列になっているので、これを新しい行として追加すればよいと。ファイルやディレクトリを適切なものに設定してあれば、これでリモートログインできるようになる。
設定ファイルの作成
後は、対象となるホストに簡単にリモートログインできるように、ホストごとに設定を書いておく。次のような設定を$HOME/.ssh/configファイルへ書き込んでいけばOKだ。必要に応じて、ほかの設定もここに追加しておくと良いだろう。
Host 名前
Hostname リモートログイン先のIPアドレス
User ユーザー名
IdentityFile ~/.ssh/秘密鍵ファイル
上記のように設定を書いておけば、以下のコマンド実行で対象のホストにリモートログインできる。
ssh 名前
リモートログインがうまくいかないときは、sshに-vvvといったオプションを追加して「ssh -vvv 名前」のようにコマンドを実行してみよう。大量のログが出力されるので、問題を見つけやすくなるはずだ。
OpenSSHとPowerShellでWindowsを使いこなす
これまでの設定でWindowsもLinuxサーバやMacと同じようにOpenSSH経由でリモートログインして操作する対象になった。同じ要領でWindowsからほかのホストへOpenSSHでリモートログインできるようにもなったし、操作感はLinuxやMacと大差がないはずだ。
次に考えたいのは、WindowsにOpenSSH経由でリモートログインした状態でさまざまなアプリケーションを実行したり、データを共有したりする方法だ。実は、OpenSSHでリモートログインした状態ではデスクトップアプリケーションを起動することができない。次回、この辺りをどうやってクリアしていくかを取り上げる。