マイナビニュースマイナビ

OpenSSHでWindowsへリモートログインする - 認証鍵の設定

【連載】

PowerShell Core入門 - 基本コマンドの使い方

【第173回】OpenSSHでWindowsへリモートログインする - 認証鍵の設定

[2021/11/05 08:00]後藤大地 ブックマーク ブックマーク

前回、OpenSSHによるWindowsへのリモートログインを実現するために、OpenSSHサーバを有効化して利用する方法を紹介した。OpenSSHは、LinuxやMacなどのUNIX系のOSではリモートログインの方法として一般的に使われているが、Windowsで使われることはあまりない。ただし、Windows 10以降ではOpenSSHサーバの機能がデフォルトで取り込まれているため、有効化と設定さえ行えばLinuxやMacのように使うことができるのだ。

LinuxやMacへのログインにOpenSSHを使うのはもはやデファクトスタンダードだが、同じアクセス手段はWindowsでも使えたほうが良い。WindowsにもOpenSSHでアクセスできれば、アクセス管理やアクセス方法を共通化することができるので、何かと便利なことが多いのだ。PowerShellのポテンシャルも発揮しやすくなる。

今回は、設定したOpenSSHサーバを使う方法を説明する。

アクセス元PCで認証鍵(秘密鍵・公開鍵)を作成

OpenSSHサーバにアクセスしたときの認証方法はいくつかあるが、認証鍵を使う方法を基本として考えておこう。この方法であれば、ブルートフォース攻撃やパスワードスプレーといった攻撃で侵入される可能性が低い上にアクセス制御もしやすい。

認証鍵を使う方法は簡単だ。Windowsにログインしたいホスト(WindowsでもMacでもLinuxでも、OpenSSHクライアントでも良いし、それらの互換ソフトウエアが動いていれば何でも良い)で認証鍵(秘密鍵と公開鍵のペア)を作成し、公開鍵のほうをリモートログイン先に配置する。認証するには対になる秘密鍵が必須なので、秘密鍵を自分だけが保持していれば、自分以外はログインできないという寸法だ。

認証鍵は「ssh-keygen」というコマンドで生成する。

ssh-keygen

ssh-keygenコマンドを実行すると次のようになる。

ssh-keygenコマンドの実行例

デフォルトだと秘密鍵が${HOME}/.ssh/id_rsaファイルに、公開鍵が${HOME}/.ssh/id_rsa.pubファイルに出力される。パスフレーズというのは秘密鍵そのものに設定するパスワードのようなものだ。設定しても設定しなくてもよいが、心配なら設定しておけばよいだろう。秘密鍵が窃取された時点でパスフレーズが破られるのは時間の問題だが、多少の抑止力になるのは間違いない。この辺りは、状況に応じて設定してもらえればと思う。

なお、すでに認証鍵(公開鍵と秘密鍵)を持っている場合には注意してほしい。上記のコマンドによって既存の認証鍵(公開鍵と認証鍵)が上書きれてしまうという大惨事が発生しかねない。バックアップを取るなり、出力ファイルを変更するなり、注意して作業しよう。そもそも、すでに認証鍵があるなら、ssh-keygenで新しく生成しなくても既存の認証鍵を使うことになるはずだ。

アクセス先となるWindowsへ公開鍵を設置

先ほど生成した公開鍵と秘密鍵は、デフォルトのままであれば${HOME}/.ssh/id_rsaと${HOME}/.ssh/id_rsa.pubとして生成されている。

parancell-mini ~% ll .ssh/id*
-r--------  1 daichi  staff   2.6K  6 22 23:42 .ssh/id_rsa
-r--------  1 daichi  staff   583B  6 22 23:42 .ssh/id_rsa.pub
parancell-mini ~%

このうち公開鍵のほうを、リモートアクセスしたいWindowsの${HOME}.ssh\authorized_keysファイルに追記する。公開鍵ファイルの中身は1行の長い文字列になっている。これをリモートアクセスしたいWindowsの${HOME}.ssh\authorized_keysファイルへ新しい行として追記すればOKだ。

PS C:\Users\daichi> dir .\.ssh\authorized_keys

    Directory: C:\Users\daichi\.ssh

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2021/10/09    12:11           1157 authorized_keys

PS C:\Users\daichi>

間違っても、秘密鍵を書き込まないように注意しよう。秘密鍵は自分だけが持っている必要があり、リモートログイン先に配置するのは公開鍵のほうだ。誤って秘密鍵をどこか別のホストにコピーしてしまったのなら、その認証鍵は捨てて、新しい認証鍵を生成して利用しよう。外部に漏れた秘密鍵は、もはや鍵としての意味を成さないのだ。

アクセス元PCでログイン設定を作成

リモートログイン先のWindowsに公開鍵を設置したら、最後にアクセス元PCのOpenSSHクライアントに設定を書き込む。具体的には、リモートログイン先のIPアドレス(またはアクセス可能なホスト名)、ユーザー名、アクセスに使用する秘密鍵ファイルのパスを設定として${HOME}/.ssh/configファイルに書いておくことになる。

Host 名前
        Hostname                WindowsのIPアドレス
        User                    ユーザー名
        IdentityFile            ~/.ssh/秘密鍵ファイル

Windowsでのユーザー名がわからない場合、次のように環境変数を調べればわかるだろう。

PS C:\Users\daichi> echo $env:USERNAME
daichi
PS C:\Users\daichi>

これで「ssh 名前」で、設定したWindowsへリモートログインができるようになる。

アクセス元PCからアクセス先Windowsへリモートログインを確認

設定が終わったら、OpenSSHでリモートログインを行ってみよう。以下は、MacからWindowsへOpenSSHへリモートログインした例だ。

MacからWindowsへOpenSSHでリモートログインした場合

WindowsもOpenSSHでログインできると便利

前回のOpenSSHサーバのセットアップで、リモートログイン後のデフォルトシェルをPowerShell 7へ変更している。これでログイン後にはpwshが起動するため、PowerShell 7による操作が可能になるのだ。

「WindowsへOpenSSHでログインする」という操作には、最初は違和感があるかもしれない。だが、使い慣れるとこれほど便利な機能はないんじゃないかと思えてくるはずだ。やはり、ほかのホストと同じようにsshでリモートログインできるようになる、というのは大きい。PowerShell 7はインタラクティブシェルとしても十分なポテンシャルを持っており、Windowsの操作に一役買ってくれるのだ。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【連載】RPA入門 - ツールで学ぶ活用シーン

【連載】RPA入門 - ツールで学ぶ活用シーン

AIには、ルールベース、機械学習、深層学習(ディープラーニング)の3つのレベルがあり、レベルが上がるに連れてより高度な人工知能を実現しますが、AIのスピンオフという位置付けで、Digital Labor(仮想知的労働者)によるホワイトカラー業務の自動化を実現するRPAが注目されています。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で TECH+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
Slackで始める新しいオフィス様式
Google Workspaceをビジネスで活用する
人生を豊かにするパラレルキャリア~VUCA時代に新しい生き方を選ぶ理由とは~
ニューノーマル時代のオウンドメディア戦略
ミッションステートメント
次世代YouTubeクリエイターの成長戦略
IoTでできることを見つけるための発想トレーニング
教えてカナコさん! これならわかるAI入門
AWSではじめる機械学習 ~サービスを知り、実装を学ぶ~
Kubernetes入門
SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~
マイクロサービス時代に活きるフレームワーク Spring WebFlux入門
AWSで作るマイクロサービス
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る