Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SSH access to Arc enabled servers

SSH access to Arc enabled servers

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

Kazuki Takai

September 17, 2022
Tweet

More Decks by Kazuki Takai

Other Decks in Technology

Transcript

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

    servers 触ったことがある方 • az ssh 使ったことがある方
  2. お話しすること •az ssh コマンド • Arc enabled servers への SSH

    / RDP 接続 • 以下はお話ししません • Azure Arc enabled servers のオンボード方法
  3. 自己紹介 • たかい (Kazuki Takai) • 会社員 (某ISP勤務) • サービス基盤開発、技術開発

    • ライセンス関連 • wSCUGJ • 興味分野:統合管理、ID、自動化、セキュリティ、監視・運用 • 趣味:カメラ(風景写真)、ビデオゲーム、旅行(温泉) • Microsoft MVP for Cloud and Datacenter Management
  4. Azure CLI SSH Extension • Azure CLI (Az コマンド)の拡張機能の一つ •

    az ssh コマンド(コンテキスト)を利用可能 • 接続先のリソースは以下の2種類 • Azure 仮想マシン(Virtual Machine) • az ssh vm • Azure Arc 対応サーバー(Arc enabled servers) • az ssh arc
  5. Azure VM に対する Azure CLI からの SSH • az ssh

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

    --version • Azure CLI SSH extension が必要 • extension が入っていない場合、コマンド実行時に インストール可能 • az extension で明示的なインストールも可能
  7. 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
  8. Azure CLI のログイン • az login で Web ブラウザが起動するので、サインイン •

    環境によっては --use-device-code オプションを使用 • ログイン後、利用したいサブスクリプションが選択され ていることを確認 • 異なる場合は、明示的にサブスクリプションを選択
  9. 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
  10. SSH 接続の前提(az ssh vm) • 接続先に対して IP Reachability があること •

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

    sshd サービスを開始 • サービスを自動起動するよう設定 • (Windows Defender Firewall で通信を許可) • 公開鍵認証ができるよう、適切なパスに公開鍵を配置
  12. Windows における公開鍵のパス • Administrators グループに所属しているユーザー • $env:ProgramData¥ssh¥administrators_authorized_keys • NTFS アクセス権の個別設定が必要

    • 継承を無効化 • Administrators と SYSTEM にフルコントロール • それ以外のユーザー • $env:USERPROFILE¥.ssh¥authorized_keys
  13. 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
  14. Arc 対応サーバーに対する SSH • az ssh arc • Azure Arc

    enabled servers に対して SSH で接続 • Arc enabled servers マシン名で接続 • 外部から接続先 IP への Reachability 不要 • (条件を満たせば)シングルサインオンが可能 • az login しているアカウントで VM へログイン • RDP over SSH が可能(トンネリング)
  15. SSH 接続の前提(az ssh arc) • Hybrid Connectivity RP が登録済み •

    Connected Agent のバージョンが 1.13.21320.014 以上 • SSH Server が稼働 • Azure RBAC でアクセスが許可されている • SSH の公開鍵認証でログインできる • ローカルユーザーでログインする場合のみ必要 • Azure AD 連携用 Extension がインストール済み • Azure AD ユーザーで SSO する場合のみ必要
  16. 対応 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
  17. 対応リージョン (az ssh arc) eastus2euap eastus eastus2 westus2 southeastasia westeurope

    northeurope westcentralus southcentralus uksouth australiaeast francecentral japaneast eastasia koreacentral westus3 westus centralus northcentralus
  18. Hybrid Connectivity Resource Provider • サブスクリプションに対して1回のみ必要 • az provider show

    -n Microsoft.HybridConnectivity | Select-String -Pattern "namespace|registration" • az provider register -n Microsoft.HybridConnectivity
  19. 接続エンドポイントの作成 • 接続対象の 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¥"}}'
  20. Azure AD based SSH Login Extension • Azure Arc enabled

    servers リソースに対して Azure AD ユーザーがログインするために必要 • 拡張機能から追加
  21. まとめ • az ssh を使用すると VM や Arc 対応サーバーに SSH

    接続が可能 • az ssh arc では、外部から SSH Listen Port への 到達性は不要 • SSH トンネリングにより RDP 接続も可能 • 使わなくても、機能があることを知っておくこと が重要(セキュリティ等の観点からも)
  22. 参考資料 • 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