Arc 対応サーバーへの
SSH アクセス
SCUGJ (wSCUGJ) 勉強会 #31 2022-09-17
Kazuki Takai - Windows Server & Cloud User Group Japan
始める前に
• Azure 仮想マシン(IaaS VM)
使ったことがある方
• Azure Arc enabled servers
触ったことがある方
• az ssh 使ったことがある方
お話しすること
•az ssh コマンド
•Arc enabled servers への SSH / RDP 接続
•以下はお話ししません
• Azure Arc enabled servers のオンボード方法
自己紹介
• たかい (Kazuki Takai)
• 会社員 (某ISP勤務)
• サービス基盤開発、技術開発
• ライセンス関連
• wSCUGJ
• 興味分野:統合管理、ID、自動化、セキュリティ、監視・運用
• 趣味:カメラ(風景写真)、ビデオゲーム、旅行(温泉)
• Microsoft MVP for Cloud and Datacenter Management
注意点
• 本セッションでは、リリース前の機能についてお話しします
• 仕様等が変更となる可能性があります
• 本セッションのほとんどのコマンド(az コマンド)は、
PowerShell から実行しています
• 記載されているコマンドのエスケープは PowerShell 仕様です
• Bash 等から実行する場合は、適宜読み替えてください
Azure CLI SSH Extension
• Azure CLI (Az コマンド)の拡張機能の一つ
• az ssh コマンド(コンテキスト)を利用可能
• 接続先のリソースは以下の2種類
• Azure 仮想マシン(Virtual Machine)
• az ssh vm
• Azure Arc 対応サーバー(Arc enabled servers)
• az ssh arc
Azure VM に対する Azure CLI からの SSH
• az ssh vm
• Azure の仮想マシンに対して SSH で接続
• IP アドレスや DNS 名ではなく VM 名で接続可能
• 但し、VM が保持する IP への Reachability は必要
• (条件を満たせば)シングルサインオンが可能
• az login しているアカウントで VM へログイン
• RDP over SSH が可能(トンネリング)
az ssh を使うには
• Azure CLI 2.4.0 以降が必要
• az --version
• Azure CLI SSH extension が必要
• extension が入っていない場合、コマンド実行時に
インストール可能
• az extension で明示的なインストールも可能
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
Azure CLI のバージョン確認
• バージョンが 2.4.0 以上であること
Azure CLI のログイン
• az login で Web ブラウザが起動するので、サインイン
• 環境によっては --use-device-code オプションを使用
• ログイン後、利用したいサブスクリプションが選択され
ていることを確認
• 異なる場合は、明示的にサブスクリプションを選択
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
SSH Extension のインストール
• コマンド実行時、必要であればインストールされる
SSH Extension インストール後の確認
• $env:USERPROFILE 配下にインストールされる
• インストールに管理者権限は不要
SSH 接続の前提(az ssh vm)
• 接続先に対して IP Reachability があること
• Global IP or Private IP
• Private IP の場合、VPN 等で直接疎通があること
• 接続先で SSH Server が稼働していること
• 到達可能な IP で Listen していること
• Azure RBAC でアクセスが許可されていること
• SSH の公開鍵認証でログインできること
• ローカルユーザーでログインする場合のみ必要
Azure RBAC
• 接続先に対して以下のロール(何れか)が必要
• 仮想マシンの管理者ログイン
• 仮想マシンのユーザー ログイン
Windows に対する SSH アクセス
• Windows の機能で OpenSSH.Server をインストール
• sshd サービスを開始
• サービスを自動起動するよう設定
• (Windows Defender Firewall で通信を許可)
• 公開鍵認証ができるよう、適切なパスに公開鍵を配置
Windows における公開鍵のパス
• Administrators グループに所属しているユーザー
• $env:ProgramData¥ssh¥administrators_authorized_keys
• NTFS アクセス権の個別設定が必要
• 継承を無効化
• Administrators と SYSTEM にフルコントロール
• それ以外のユーザー
• $env:USERPROFILE¥.ssh¥authorized_keys
Azure AD ユーザーによるログイン
• 設定が必要
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
Arc 対応サーバーに対する SSH
• az ssh arc
• Azure Arc enabled servers に対して SSH で接続
• Arc enabled servers マシン名で接続
• 外部から接続先 IP への Reachability 不要
• (条件を満たせば)シングルサインオンが可能
• az login しているアカウントで VM へログイン
• RDP over SSH が可能(トンネリング)
SSH 接続の前提(az ssh arc)
• Hybrid Connectivity RP が登録済み
• Connected Agent のバージョンが 1.13.21320.014 以上
• SSH Server が稼働
• Azure RBAC でアクセスが許可されている
• SSH の公開鍵認証でログインできる
• ローカルユーザーでログインする場合のみ必要
• Azure AD 連携用 Extension がインストール済み
• Azure AD ユーザーで SSO する場合のみ必要
対応 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
対応リージョン (az ssh arc)
eastus2euap eastus eastus2 westus2 southeastasia
westeurope northeurope westcentralus southcentralus uksouth
australiaeast francecentral japaneast eastasia koreacentral
westus3 westus centralus northcentralus
Agent のバージョン確認
• azcmagent show | grep -v ID
Hybrid Connectivity Resource Provider
• サブスクリプションに対して1回のみ必要
• az provider show -n Microsoft.HybridConnectivity |
Select-String -Pattern "namespace|registration"
• az provider register -n
Microsoft.HybridConnectivity
接続エンドポイントの作成
• 接続対象の 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¥"}}'
Hybrid Agent の設定変更
• 接続対象の Arc 対応サーバー上で、Agent 経由の SSH
接続を受け付けるよう設定を変更
• azcmagent config set incomingconnections.ports 22
• azcmagent config list
Azure AD based SSH Login Extension
• Azure Arc enabled servers リソースに対して Azure
AD ユーザーがログインするために必要
• 拡張機能から追加
まとめ
• az ssh を使用すると VM や Arc 対応サーバーに
SSH 接続が可能
• az ssh arc では、外部から SSH Listen Port への
到達性は不要
• SSH トンネリングにより RDP 接続も可能
• 使わなくても、機能があることを知っておくこと
が重要(セキュリティ等の観点からも)
参考資料
• 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-arc-
overview
• Azure AD と OpenSSH を使用して Azure の
Linux 仮想マシンにログインする
• https://docs.microsoft.com/ja-jp/azure/active-
directory/devices/howto-vm-sign-in-azure-ad-linux

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

  • 1.
    Arc 対応サーバーへの SSH アクセス SCUGJ(wSCUGJ) 勉強会 #31 2022-09-17 Kazuki Takai - Windows Server & Cloud User Group Japan
  • 2.
    始める前に • Azure 仮想マシン(IaaSVM) 使ったことがある方 • Azure Arc enabled servers 触ったことがある方 • az ssh 使ったことがある方
  • 3.
    お話しすること •az ssh コマンド •Arcenabled servers への SSH / RDP 接続 •以下はお話ししません • Azure Arc enabled servers のオンボード方法
  • 4.
    自己紹介 • たかい (KazukiTakai) • 会社員 (某ISP勤務) • サービス基盤開発、技術開発 • ライセンス関連 • wSCUGJ • 興味分野:統合管理、ID、自動化、セキュリティ、監視・運用 • 趣味:カメラ(風景写真)、ビデオゲーム、旅行(温泉) • Microsoft MVP for Cloud and Datacenter Management
  • 5.
    注意点 • 本セッションでは、リリース前の機能についてお話しします • 仕様等が変更となる可能性があります •本セッションのほとんどのコマンド(az コマンド)は、 PowerShell から実行しています • 記載されているコマンドのエスケープは PowerShell 仕様です • Bash 等から実行する場合は、適宜読み替えてください
  • 6.
    Azure CLI SSHExtension • 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.
    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 sshvm) • 接続先に対して 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.
  • 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 ssharc) • Hybrid Connectivity RP が登録済み • Connected Agent のバージョンが 1.13.21320.014 以上 • SSH Server が稼働 • Azure RBAC でアクセスが許可されている • SSH の公開鍵認証でログインできる • ローカルユーザーでログインする場合のみ必要 • Azure AD 連携用 Extension がインストール済み • Azure AD ユーザーで SSO する場合のみ必要
  • 23.
    対応 OS (azssh 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 ssharc) eastus2euap eastus eastus2 westus2 southeastasia westeurope northeurope westcentralus southcentralus uksouth australiaeast francecentral japaneast eastasia koreacentral westus3 westus centralus northcentralus
  • 25.
  • 26.
    Hybrid Connectivity ResourceProvider • サブスクリプションに対して1回のみ必要 • az provider show -n Microsoft.HybridConnectivity | Select-String -Pattern "namespace|registration" • az provider register -n Microsoft.HybridConnectivity
  • 27.
    接続エンドポイントの作成 • 接続対象の 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 basedSSH 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-arc- overview • Azure AD と OpenSSH を使用して Azure の Linux 仮想マシンにログインする • https://docs.microsoft.com/ja-jp/azure/active- directory/devices/howto-vm-sign-in-azure-ad-linux