Arc 対応サーバーへの SSH アクセス

2.3K Views

September 17, 22

スライド概要

Windows Server & Cloud User Group Japan 第31回勉強会の資料です。
Arc 対応サーバーへ外部から SSH アクセスする機能について説明します。外部に SSH ポートを公開しなくても Azure の管理エンドポイント経由で SSH 接続を行いサーバーを管理することができます。

profile-image

インフラエンジニア

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Arc 対応サーバーへの SSH アクセス SCUGJ (wSCUGJ) 勉強会 #31 2022-09-17 Kazuki Takai - Windows Server & Cloud User Group Japan

2.

始める前に • Azure 仮想マシン(IaaS VM) 使ったことがある方 • Azure Arc enabled servers 触ったことがある方 • az ssh 使ったことがある方

3.

お話しすること • az ssh コマンド • Arc enabled servers への SSH / RDP 接続 • 以下はお話ししません • Azure Arc enabled servers のオンボード方法

4.

自己紹介 • たかい (Kazuki Takai) • 会社員 (某ISP勤務) • サービス基盤開発、技術開発 • ライセンス関連 • wSCUGJ • 興味分野:統合管理、ID、自動化、セキュリティ、監視・運用 • 趣味:カメラ(風景写真)、ビデオゲーム、旅行(温泉) • Microsoft MVP for Cloud and Datacenter Management

5.

注意点 • 本セッションでは、リリース前の機能についてお話しします • 仕様等が変更となる可能性があります • 本セッションのほとんどのコマンド(az コマンド)は、 PowerShell から実行しています • 記載されているコマンドのエスケープは PowerShell 仕様です • Bash 等から実行する場合は、適宜読み替えてください

6.

Azure CLI SSH Extension • Azure CLI (Az コマンド)の拡張機能の一つ • az ssh コマンド(コンテキスト)を利用可能 • 接続先のリソースは以下の2種類 • Azure 仮想マシン(Virtual Machine) • az ssh vm • Azure Arc 対応サーバー(Arc enabled servers) • az ssh arc

7.

Azure VM に対する Azure CLI からの SSH • az ssh vm • Azure の仮想マシンに対して SSH で接続 • IP アドレスや DNS 名ではなく VM 名で接続可能 • 但し、VM が保持する IP への Reachability は必要 • (条件を満たせば)シングルサインオンが可能 • az login しているアカウントで VM へログイン • RDP over SSH が可能(トンネリング)

8.

az ssh を使うには • Azure CLI 2.4.0 以降が必要 • az --version • Azure CLI SSH extension が必要 • extension が入っていない場合、コマンド実行時に インストール可能 • az extension で明示的なインストールも可能

9.

az ssh コマンドを実行するための事前準備 • az --version • az login • az account show | Select-String -Pattern '[Nn]ame' | Select-String -Pattern '@' –NotMatch • az account set -n "<Subscription Name>" • az ssh –help • az extension list

10.

Azure CLI のバージョン確認 • バージョンが 2.4.0 以上であること

11.

Azure CLI のログイン • az login で Web ブラウザが起動するので、サインイン • 環境によっては --use-device-code オプションを使用 • ログイン後、利用したいサブスクリプションが選択され ていることを確認 • 異なる場合は、明示的にサブスクリプションを選択

12.
[beta]
Extension の確認
• 現在インストールされている Extension を表示
• az extension list

• 利用可能な Extension を表示
• az extension list-available --query "[].{Name:name,
Preview:preview, Experimental:experimental,
Installed:installed}" --output table

• SSH Extension のインストール状態を表示
• az extension list-available --query "[?(name ==
'ssh')].{Name:name, Preview:preview,
Experimental:experimental, Installed:installed}" -output table

13.

SSH Extension のインストール • コマンド実行時、必要であればインストールされる

14.

SSH Extension インストール後の確認 • $env:USERPROFILE 配下にインストールされる • インストールに管理者権限は不要

15.

SSH 接続の前提(az ssh vm) • 接続先に対して IP Reachability があること • Global IP or Private IP • Private IP の場合、VPN 等で直接疎通があること • 接続先で SSH Server が稼働していること • 到達可能な IP で Listen していること • Azure RBAC でアクセスが許可されていること • SSH の公開鍵認証でログインできること • ローカルユーザーでログインする場合のみ必要

16.

Azure RBAC • 接続先に対して以下のロール(何れか)が必要 • 仮想マシンの管理者ログイン • 仮想マシンのユーザー ログイン

17.

Windows に対する SSH アクセス • Windows の機能で OpenSSH.Server をインストール • sshd サービスを開始 • サービスを自動起動するよう設定 • (Windows Defender Firewall で通信を許可) • 公開鍵認証ができるよう、適切なパスに公開鍵を配置

18.

Windows における公開鍵のパス • Administrators グループに所属しているユーザー • $env:ProgramData¥ssh¥administrators_authorized_keys • NTFS アクセス権の個別設定が必要 • 継承を無効化 • Administrators と SYSTEM にフルコントロール • それ以外のユーザー • $env:USERPROFILE¥.ssh¥authorized_keys

19.

Azure AD ユーザーによるログイン • 設定が必要

20.

Azure VM に対する接続 • 接続先のローカルユーザーを指定してログイン • az ssh vm -g <RGName> -n <VMName> --local-user <UserName> -i <PrivateKeyFilePath> -p <PublicKeyFilePath> • Azure AD ユーザーでログイン • az ssh vm -g <RGName> -n <VMName> • RDP アクセス • az ssh vm -g <RGName> -n <VMName> --local-user <UserName> -i <PrivateKeyFilePath> -p <PublicKeyFilePath> --rdp

21.

Arc 対応サーバーに対する SSH • az ssh arc • Azure Arc enabled servers に対して SSH で接続 • Arc enabled servers マシン名で接続 • 外部から接続先 IP への Reachability 不要 • (条件を満たせば)シングルサインオンが可能 • az login しているアカウントで VM へログイン • RDP over SSH が可能(トンネリング)

22.

SSH 接続の前提(az ssh arc) • Hybrid Connectivity RP が登録済み • Connected Agent のバージョンが 1.13.21320.014 以上 • SSH Server が稼働 • Azure RBAC でアクセスが許可されている • SSH の公開鍵認証でログインできる • ローカルユーザーでログインする場合のみ必要 • Azure AD 連携用 Extension がインストール済み • Azure AD ユーザーで SSO する場合のみ必要

23.

対応 OS (az ssh arc) • Windows • Windows 7+ • Windows Server 2012+ • Linux • CentOS 7, CentOS 8 • RHEL 7.4 ~ 7.10, RHEL 8.3+ • SLES 12, SLES 15.1+ • Ubuntu Server 16.04 ~ 20.04

24.

対応リージョン (az ssh arc) eastus2euap eastus eastus2 westus2 southeastasia westeurope northeurope westcentralus southcentralus uksouth australiaeast francecentral japaneast eastasia koreacentral westus3 westus centralus northcentralus

25.

Agent のバージョン確認 • azcmagent show | grep -v ID

26.

Hybrid Connectivity Resource Provider • サブスクリプションに対して1回のみ必要 • az provider show -n Microsoft.HybridConnectivity | Select-String -Pattern "namespace|registration" • az provider register -n Microsoft.HybridConnectivity

27.
[beta]
接続エンドポイントの作成
• 接続対象の Arc 対応サーバー マシンごとに必要
• az rest --method put --uri
https://management.azure.com/subscriptions/<subscri
ption>/resourceGroups/<resourcegroup>/providers/Mic
rosoft.HybridCompute/machines/<arc enabled server
name>/providers/Microsoft.HybridConnectivity/endpoi
nts/default?api-version=2021-10-06-preview --body
'{¥"properties¥": {¥"type¥": ¥"default¥"}}'

28.

Hybrid Agent の設定変更 • 接続対象の Arc 対応サーバー上で、Agent 経由の SSH 接続を受け付けるよう設定を変更 • azcmagent config set incomingconnections.ports 22 • azcmagent config list

29.

Azure AD based SSH Login Extension • Azure Arc enabled servers リソースに対して Azure AD ユーザーがログインするために必要 • 拡張機能から追加

30.

まとめ • az ssh を使用すると VM や Arc 対応サーバーに SSH 接続が可能 • az ssh arc では、外部から SSH Listen Port への 到達性は不要 • SSH トンネリングにより RDP 接続も可能 • 使わなくても、機能があることを知っておくこと が重要(セキュリティ等の観点からも)

31.

参考資料 • az ssh • https://docs.microsoft.com/ja-jp/cli/azure/ssh • Azure Arc 対応サーバーへの SSH アクセス • https://docs.microsoft.com/ja-jp/azure/azure-arc/servers/ssh-arcoverview • Azure AD と OpenSSH を使用して Azure の Linux 仮想マシンにログインする • https://docs.microsoft.com/ja-jp/azure/activedirectory/devices/howto-vm-sign-in-azure-ad-linux