AWS Systems Manager セッションマネージャーで Windows Server 2019 にSSH・SCPしてみた

2019.07.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

AWS Systems Manager セッションマネージャーで Windows 10 でSSH・SCPしてみた

以前の記事ではWindows 10に付属しているSSHクライアントを使いAWS Systems Manager セッションマネージャーのSSH・SCP機能を試しました。

SSHが標準で付属しているWindowsはWindows 10だけでなくWindows Server 2019においてもSSHサーバーおよびクライアント機能を利用することができます。 本記事ではWindows Server 2019のSSHサーバーを有効にしてセッションマネージャーのSSH・SCP機能を試してみます。

クライアント環境

今回試すクライアント環境は以前と同じ環境を使います。

  • 64bit版 Windows 10 May 2019 Update (1903)

環境構築手順は以前の記事を参照してください。

サーバー環境

サーバー環境は現時点で最新の日本語版Windows Server 2019インスタンスを使用します。

  • AMIID : Windows_Server-2019-Japanese-Full-Base-2019.07.12 (ami-04ccec1d96218928b)
  • SSM Agentを最新(Ver. 2.3.672.0)に更新
  • AmazonSSMManagedInstanceCoreのポリシーを持つIAMロールをアタッチ済み
  • SSHのポート(TCP 22)は外部に公開しない
  • ただし、インスタンスからインターネット経由またはVPCエンドポイント経由でSSMのエンドポイントにアクセス可能である必要があります

SSM Agentの更新

SSM Agentを更新する方式は何でも構いませんが、本記事ではAWS-UpdateSSMAgentドキュメントで行います。

# 既定のリージョンおよびプロファイルの指定は環境に合わせて行ってください
Set-DefaultAWSRegion -Region ap-northeast-1
Set-AWSCredential -ProfileName your-profile

# AWS-JoinDirectoryServiceDomain ドキュメントを実行
$params = @{
    InstanceId   = '該当インスタンスID';
    DocumentName = 'AWS-UpdateSSMAgent';
}
Send-SSMCommand @params

# 結果の確認は Get-SSMCommandInvocationDetail で
Get-SSMCommandInvocationDetail -InstanceId '該当インスタンスID' -CommandId '該当コマンドID'

これでVer.2.3.672.0に更新できました。

SSHサーバーの構成

Windows Server 2019でSSHサーバーを構成する方法については前回記事を書きましたのでこちらの手順を参照してください。

Windows Server 2019 EC2インスタンスでSSHサーバーを有効にする

頑張ればこの手順を一連のスクリプト化できると思いますが本記事ではそこまではしません。

最終的な構成としては下図の様になります。

試してみた

それでは今回もこれまでと同様に試していきます。

EC2 インスタンスに SSH

SSHコマンドで接続先ホストに該当EC2インスタンスのインスタンスIDを指定して接続してみます。

ssh -i [EC2キーペア].pem administrator@i-1234567890 -v

Windows Serverに対して無事接続できました。

SCP でファイル転送

続けてSCPでローカルファイルをアップロードしてみます。

# ファイル転送
scp -i [EC2キーペア].pem C:\temp\sample.txt administrator@i-1234567890:C:\

# 転送結果の確認
ssh -i [EC2キーペア].pem administrator@i-1234567890 dir C:\\

ちょっと表示の日本語が化けてしまっていますがファイル転送は上手くいっています。 ちなみにscpコマンドでのアップロード先指定で~は使えませんでした。

ポートフォワードしてWindows ServerにRDP接続する

RDPをポートフォーワードして同一セグメントにあるWindows Server 2019に接続してみます。

構成としては上図の様になり、Windows Serverの設定はSSHサーバーからRDPで接続可能にセキュリティグループを設定した事以外に特別な設定はしていません。

# ローカルホストは13389番ポートで受け、指定EC2の3389番ポートに転送
ssh -i [EC2キーペア].pem administrator@i-1234567890 -L 13389:[Windows EC2のIPアドレス]:3389

この状態でローカルホストの13389番ポートに対してRDP接続をすると、

Windows Server 2019のSSHサーバーでも無事ポートフォーワードできました。