メニュー 閉じる

Windows OS で SSH 接続する場合の手順をまとめました。
【Windows Server 2016、2019、Windows 10】

「SSH でログイン」って聞くと何か難しい感じしませんか?
Windows ユーザーだと特に馴染みがなく、拒否反応を起こしやすいのではないでしょうか。

大丈夫です。SSH はWindows でも友達になれます。

今や標準でWindows 10、WindowsServer 2019などに「OpenSSH」が同梱されているので、
今後はWindows ユーザーでもSSH 接続があたりまえになってくるかもしれません。

というわけで、明日のための「SSH クライアントの使い方」や、
OS 毎の「SSH サーバー設定方法」についてまとめました。

また、SSH 接続をするテスト環境についても触れてます。

Windows OS で SSH 接続する

SSH とは。

Secure Shell (セキュアシェル)

Secure Shell (セキュアシェル)の事で、安全にリモート接続する方法です。
通信が暗号化されたり、認証に暗号鍵を使用できたりといい事ばかりです。

また、この接続時のプロトコルの名前でもあります。バージョン1 と2 があります。

バージョン1 の時はそこまでセキュアではなかったようです。最近はバージョン2 が主流かと思います。

ssh コマンドでバージョン1 を指定しようとすると、「サポートしていない」旨のメッセージが表示されますし。

パケットキャプチャで確認すると、プロトコルのバージョンが確認できます。

Linux では一般的で、当たり前のようにSSH 接続するするみたいですね。
AWS でLinux のEC2 を触ったときにリモートする手段がSSH 接続しかなくて、ナニコレってなりましたが、
今は OpenSSH が同梱されるようになったので、Windows でも標準の機能としてSSH 接続が出来ます。

SSH 接続する準備

クライアント

Windows でSSH 接続するには、「OpenSSH クライアント」というオプション機能をインストールします。

Windows ロゴマーク > 設定 >アプリ >アプリと機能 >オプション機能の管理( 機能の追加)

サーバー

またOpenSSH が導入された事で、SSH 接続するだけでなく、
サーバーとしてSSH 接続を処理することもできるようになりました。

SSH 接続を処理するには、ログイン先のサーバーにSSH サーバー(sshd)をインストールします。

WindowsServer 2019

WindowsServer2019 は、SSH サーバー が機能の追加からインストール出来ます。

Windows ロゴマーク > 設定 >アプリ >アプリと機能 >オプション機能の管理( 機能の追加)

■ Windows Server 2019 へ 鍵認証を使ってSSH 接続する。

WindowsServer 2016

WindowsServer 2016 では別途入手してインストールする必要があります。

■ WindowsServer 2016 にsshd をインストールしてSSH 接続する。

WindowsServer にSSH 接続すると、シェルが「コマンドプロンプト」に代わる(?)ので、
Linux 感覚だと若干違和感あります。
また、Linux の資料を参考に作業していると、コマンドがエラーになったりするでしょう。

SSH コマンドについて

基本的なパスワードによるログイン。

下記の書式にて、パスワードを使ったSSH 接続ができます。

ssh <接続先のユーザー名>@<ホストアドレス>

例:サーバー「beccou-sever」のユーザー「uniuni」にSSH 接続する。

ssh uniuni@beccou-server

暗号鍵 を使用したログイン

これだけだと、パスワードだけでログインできてしまうので、暗号鍵ファイルを使った鍵認証の仕組みでセキュリティを強化します。

暗号鍵を使ってログインする時は、「-i」オプションを追加します。

ssh -i <秘密鍵ファイル> <接続先のユーザー名>@<ホストアドレス>

例:サーバー「beccou-sever」のユーザー「uniuni」に秘密鍵(id_rsa)を使用してSSH 接続する。

ssh -i .ssh/id_rsa uniuni@beccou-server

ログイン時にサーバーから暗号解読チャレンジが実施され、解読出来ると本人として認証される仕組みです。
(謎解きのチャレンジを投げてくるって、なんかスフィンクスの話みたいだと思ったり。)

「暗号鍵」を使用したログインの設定方法。

認証に使う暗号鍵を入手するには。

認証に使う「鍵」は、クライアント側で生成できます。

ssh-keygen

■ 暗号鍵( 秘密鍵 と 公開鍵 )を生成する。ssh-keygen コマンドのオプションについて。

ssh-keygen を実行すると、公開鍵と、秘密鍵を生成します。
生成した鍵のうち、公開鍵をサーバーに登録(ユーザーフォルダ/.ssh/authorized_keys に内容を記入)することで、暗号鍵認証による接続が可能になります。

具体的には、下図の様な構成になっていれば、鍵認証が成功します。

※公開鍵とauthorized_keys が「同じ」というのは、 authorized_keys の中にユーザーの生成した公開鍵の内容と同じ記述のものが含まれるというニュアンスです。

サーバーに公開鍵を登録するには。

クライアントで生成した「鍵」をサーバーに登録する方法は、接続するクライアントと、接続先のOS との組み合わせによって、使用するコマンドが異なります。

クライアント / 接続先OS Linux windows

Linux
ssh-copy-id <ユーザー名>@<サーバー名> ssh <ユーザー名>@<サーバー名> “mkdir .ssh”
scp <公開鍵> <ユーザー名>@<サーバー名> :/Users/ <ユーザー名> /.ssh/authorized_keys

Windows 10
Windows Server 2016
Windows Server 2019
cat <公開鍵> | ssh <ユーザー名>@<サーバーホスト名> “mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys” ssh <ユーザー名>@<サーバー名> “mkdir .ssh”
scp <公開鍵> <ユーザー名>@<サーバー名> :/Users/ <ユーザー名> /.ssh/authorized_keys

iPhone
メールで公開鍵を自分の端末に転送し、代理でサーバーに登録する。メールで公開鍵を自分の端末に転送し、代理でサーバーに登録する。

公開鍵を サーバーに登録する際、
クライアントとサーバーが、Linux 同士なら「ssh-copy-id」コマンドが便利です。

Windows がクライアントの場合、ssh-copy-id コマンドが使えないので、疑似的なssh-copy-id を実施します。

■ Raspberry Pi OS でSSH 接続を有効にする。

WindowsServer へ鍵認証 SSH 接続を設定する場合、公開鍵の登録はどのように行っても大丈夫ですが、
コンフィグを一部編集する必要があります。これは2019 でも2016 でも同じでした。

■ WindowsServer 2016 にsshd をインストールしてSSH 接続する。
■ Windows Server 2019 へ 鍵認証を使ってSSH 接続する。

iPhone から鍵認証を使い、Raspberry Pi へ SSH接続 してみました。

■ iPhone iOS 標準の「ショートカット」アプリ でSSHキー(暗号鍵認証方式)を使い SSH 接続する。

ssh-agent を使用すると、秘密鍵の情報をログイン先でも保持することができるらしい。

■ manページ  — SSH-AGENT

便利な SSH の機能

scp でファイル転送

OpenSSH で使えます。ちょっとしたファイルのアップロードやその反対もできました。
WindowsServer で公開鍵を登録する時なんかにも重宝します。

scp "C:\Users\unimoni\img\IMG_3100.JPG" uniuni@beccou-server:/home/uniuni

ローカルのファイルをRaspberry Pi へコピーできた。

■ scp コマンドについて。ssh 接続でファイルを転送する。Linux と Windows の場合。

SSH でポート転送

「-L」オプションを使うと、SSH 接続しつつ、サーバーの任意のポートを転送できます。
しかも、ファイアウォールを通過できます。

ssh -L <ポート>:<ホスト>:<ポート(サーバー)> <接続先のユーザー名>@<ホストアドレス>

例:サーバー「beccou-sever」のユーザー「uniuni」にSSH 接続し、リモート先の3389 ポートをローカルの60000 ポートへ転送する。 (ファイアウォールを通過できる。)

ssh -L 60000:localhost:3389 uniuni@beccou-server
ポートが転送できているか検証。

ローカルの60000 ポートを指定して、リモートデスクトップ接続してみる。
※転送した「3389」はリモートデスクトップ接続用のポート。
 なお、XRDP というLinux でもリモートデスクトップ接続できる拡張をインストールしてあります。

localhost:60000 で接続できている。

テスト環境のススメ

というわけで、
OpenSSH クライアントをインストールしたら、早速SSH 接続してみましょう。

とはいえ、何処へSSH 接続するの?。。。ですよね^^;

下記に案を上げてみました。どれもオススメです。

VM

 メモリとCPU が余っているなら、VM でLinux を構築。

ちなみに私のVM 環境では、
・Linux(CentOS 7)
  CPU:1スレッド、メモリ:4GB、ハードディスク:30GB(SSD) で 特にストレスなし 。
・WindowsServer 2016/2019
   CPU:2スレッド、メモリ:8GB、ハードディスク:100GB(SSD) で特にストレスなし。
となっております。

サーバー

 WindowsServer を持っているならWindowsServer にSSH サーバーを構築。
VM にWindowsServer 構築してもいいですよね。

■ WindowsServer 2016 にsshd をインストールしてSSH 接続する。
■ Windows Server 2019 へ 鍵認証を使ってSSH 接続する。

Linux

 Linux を持っているならLinux。

Paspberry Pi

 持っているならラズパイ。

■ Raspberry Pi OS でSSH 接続を有効にする。

AWS

 クラウドに興味があって、クレジットカードを持っているならAWS。

■ [AWS] Amazon Web Service のアカウントを作成する流れ。(画面キャプチャメモ)
■ AWS EC2 Windows Server のインスタンス(VM)を起動して接続する。
※EC2 作成時の参考に。
■ [AWS] 「Amazon Linux 2」に、Windows 10 からGUI で接続する。

まとめ

VM での構築なら、端末が問題なければ、基本無料で作れます。
AWS もSSH 接続するくらいの端末であれば、無料(1年間のみ)で構築できますが、、、
きっと課金したくなります^^。

参考サイト:

https://nxmnpg.lemoda.net/ja/1/ssh

https://nxmnpg.lemoda.net/ja/1/ssh-agent

(Visited 970 times, 8 visits today)
Posted in Windows

関連投稿

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です