O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

マルチプラットホームになった PowerShell 6 でクロスプラットホームする

14 visualizações

Publicada em

マルチプラットホームになった PowerShell 6 で Windows / Mac OS / CentOS 間で相互操作をする方法を解説します

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

マルチプラットホームになった PowerShell 6 でクロスプラットホームする

  1. 1. マルチプラットホームになった PowerShell 6 で クロスプラットホームする Syuichi Murashima
  2. 2. アジェンダ • PowerShell って何でしたっけ? • OSS に生まれ変わった PowerShell • PowerShell でクロスプラットホーム
  3. 3. 自己紹介 • MURA/村嶋修一 • 千葉県松戸市在住 • Windows系プラットフォーム全般担当 @ ソシャゲ屋さん • MS MVP for Cloud and Datacenter Management • http://www.vwnet.jp • mura@vwnet.jp 3
  4. 4. こんな本書きました 4
  5. 5. PowerShell って何でしたっけ?
  6. 6. PowerShell の特徴 • 従来のスクリプトを刷新したWindows用シェルスクリプト • 新たな管理インターフェイス( PS > GUI ) • 様々なリソースがハンドリングできる • リモート操作も得意 • オブジェクト • プログラミング言語に迫る高機能
  7. 7. ライトにも、ヘビーにも、ディープにも • ライト • 電卓 • プログラム ランチャー • ヘビー • 大量台数の環境構築/設定変更 • 大量台数へのプログラムインストール • ディープ • .NET Framework • WMI • Win32API
  8. 8. コマンドレットとオブジェクト • コマンドレット = PowerShell 専用コマンド • オブジェクト • プロパティにアクセス • メソッドも準備されている
  9. 9. ハンドリングできる豊富なリソース • OS、役割、ミドルウェア設定 • ファイルシステム、共有、レジストリ、イベントログ • テキスト、CSV、JSON、XML、DB • DOS コマンド実行と結果処理 • WebAPI、SOAP を使った Web Service Client • Azure、AWS 管理
  10. 10. .NET Framework / WMI ハンドリング • .NET Framework / WMI が簡単に使える • コマンドレットで実現出来ない事が実現可能 • 高度な処理も簡単に実装可能
  11. 11. OSS に生まれ変わった PowerShell
  12. 12. OSS対応バージョン • 6.0 から OSS 対応に進化 • 5.1 と 6.0 の互換性は高いが別物 • 今後の機能拡張は 6 以降だけ • 5.1 は、セキュリティ update と bug fix のみ • 5.1 のサポートは今後も続く
  13. 13. GitHub で公開 • GitHub - PowerShell/PowerShell: PowerShell for every system! • https://github.com/PowerShell/PowerShell
  14. 14. 動作可能なプラットフォーム Windows 7 SP1+/2008 R2+ Linux Red Hat Enterprise 6, 7 CentOS, Oracle Linux 7 Fedora 26,27 Debian 9,8.7+ Ubuntu 14,16,17,18 Linux Mint 18,17 openSUSE 42.3+ SUSE Enterprise 12 SP2+ macOS X 10.12+
  15. 15. 6.0 のプラットフォーム間互換性 本体プログラム名 Windows : pwsh.exe CentOS 7 : pwsh 文法 互換(試した限り) コマンドレット数 Windows : 482 CentOS 7 : 318 コマンドレットオプション 互換(試した限り) .NET Core 2.0
  16. 16. 5.1 と 6.0 の互換性(Windows 10) 本体プログラ名 5.1 : C:¥Windows¥System32¥WindowsPowerShell¥v1.0¥powershell.exe 6.0 : C:¥Program Files¥PowerShell¥6.0.2¥pwsh.exe 文法 互換(試した限り) コマンドレット数 5.1 : 1530 6.0 : 482 コマンドレット オプション 若干違う所あり .NET 5.1 : Framework 4.5.2 以降 (最新 4.7.2) 6.0 : Core 2.0
  17. 17. PowerShell で クロスプラットホーム
  18. 18. 従来のリモーティング アーキテクチャ 接続元(Windows) PowerShell 接続先(Windows) PowerShell WinRM ServiceWinRM(PS/Object) FW
  19. 19. 5.1 以前環境を Linux から操作する場合 接続元(Linux) pywinrm 等 接続先(Windows) PowerShell WinRM ServiceWinRM(Text) FW
  20. 20. クロスプラットホーム リモーティング アーキテクチャ 接続元(Windows/Linux/Mac) PowerShell PowerShell sshdssh(PS/Object) FW 接続先(Windows/Linux/Mac) ssh
  21. 21. WinRM と ssh の切り替え • リモーティング コマンドレットのオプションで切り替え • WinRM • Enter-PSSession -ComputerName 172.24.58.68 -Credential administrator • ssh • Enter-PSSession -HostName 172.24.58.68 -UserName administrator オプション WinRM ssh 接続先指定 -ComputerName -HostName アカウント指定 -Credential -UserName
  22. 22. Windows 10(1803) を クロスプラットフォーム Client にする • PowerShell 6 インストール (1803 から Open-SSH Client が default インストール済み)
  23. 23. PowerShell 6 インストール • GitHub からインストーラーをダウンロード • https://github.com/PowerShell/PowerShell/releases/download/v6.0.2/P owerShell-6.0.2-win-x64.msi • https://github.com/PowerShell/PowerShell/releases/download/v6.0.2/P owerShell-6.0.2-win-x86.msi • .msi をインストール
  24. 24. CentOS 7 を クロスプラットフォーム Server にする • PowerShell 6 インストール • sshd 設定 • sshd 再起動
  25. 25. CentOS 7 に PowerShell 6 インストール # Install PowerShell sudo yum install https://github.com/PowerShell/PowerShell/releases/download/v6. 0.2/powershell-6.0.2-1.rhel.7.x86_64.rpm # Start PowerShell pwsh
  26. 26. sshd 設定と再起動 • sshd 設定ファイル /etc/ssh/sshd_config • sshd_config を編集 • Subsystem powershell /usr/bin/pwsh -sshs -NoLogo –NoProfile を追加 • (“Subsystem powershell” + pwsh のフルパス + “-sshs -NoLogo -NoProfile” を追加) • PubkeyAuthentication の有効化(# を外す) • PasswordAuthentication の有効化(# を外す) • sshd 再起動 sudo service sshd restart
  27. 27. Demo 環境
  28. 28. Demo • Windows 10 → CentOS 7 Server
  29. 29. Windows Server を クロスプラットフォーム Server にする • PowerShell 6 インストール • Win32-OpenSSH インストール • ssh 受信用に Windows ファイヤーウォール穴あけ(tcp/22) • ssh へ Path を通す • sshd サービス自動起動設定/起動 • sshd サービス設定/サービス再起動
  30. 30. Win32-OpenSSH インストール • GitHub からダウンロード • https://github.com/PowerShell/Win32-OpenSSH/releases • 直リン • https://github.com/PowerShell/Win32-OpenSSH/releases/download/v7.6.1.0p1- Beta/OpenSSH-Win64.zip • https://github.com/PowerShell/Win32-OpenSSH/releases/download/v7.6.1.0p1- Beta/OpenSSH-Win32.zip • 展開したファイルを適当なフォルダにコピー • C:¥Program Files¥OpenSSH¥ • インストールスクリプトを実行 • C:¥Program Files¥OpenSSH¥install-sshd.ps1
  31. 31. ssh ファイヤーウォール穴あけ • GUI か PowerShell で TCP/22 を開く New-NetFirewallRule ` -Name sshd ` -DisplayName “OpenSSH Server (sshd)” ` -Enabled True ` -Direction Inbound ` -Protocol TCP ` -Action Allow ` -LocalPort 22
  32. 32. ssh へ Path を通す • GUI か setx で ssh へ Path を通す # Add Path setx /m Path ($env:Path + ";" + (Join-Path $env:ProgramFiles OpenSSH))
  33. 33. サービス自動起動設定/起動 • GUI か PowerShell で sshd サービスの自動起動設定 Set-Service sshd -StartupType Automatic • sshd 起動 Start-Service sshd
  34. 34. sshd サービス設定と起動 • sshd 設定ファイル • C:¥ProgramData¥ssh¥sshd_config • sshd_config を編集 • Subsystem powershell C:¥Program Files¥PowerShell¥6.0.2¥pwsh.exe -sshs -NoLogo -NoProfile を追加 (“Subsystem powershell” + pwsh.exe のフルパス + “-sshs -NoLogo -NoProfile” を追加) • PubkeyAuthentication の有効化(# を外す) • PasswordAuthentication の有効化(# を外す) • sshd 再起動 Restart-Service sshd
  35. 35. CentOS 7 を クロスプラットフォーム Client にする • PowerShell 6 インストール
  36. 36. Demo • CentOS 7 Client → Windows Server • Windows 10 → Windows Server
  37. 37. 公開鍵を使う 接続元(Windows/Linux/Mac) PowerShell PowerShell sshdssh(PS/Object) FW 接続先(Windows/Linux/Mac) ssh 公開鍵 秘密鍵 ssh-agent
  38. 38. 公開鍵環境作成 • Client(Windows 10 1803) • 鍵ペア作成 • ssh-agent の自動起動設定と起動 • 秘密鍵のパスフレーズを ssh-agent に登録 • Server • 公開鍵配置 • パーミッション設定
  39. 39. Client でキーペア作成 • ユーザープロファイルディレクトリ直下の「.ssh」フォルダに 鍵ペアを作る • ssh-keygen -t rsa -f 鍵ファイル名
  40. 40. ssh-agent の自動起動設定と起動 • GUI か PowerShell で ssh-agent を自動起動設定し起動 # start setting ssh-agent Set-Service ssh-agent -StartupType Automatic # start service Start-Service ssh-agent
  41. 41. パスフレーズを ssh-agent に登録 • 秘密鍵のパスフレーズを ssh-agent に登録 • ssh-add 秘密鍵ファイルパス
  42. 42. Server へ 公開鍵の設置とパーミッション設定 • ユーザープロファイルディレクトリ直下の 「.ssh¥authorized_keys」に公開鍵を追加 • 「.ssh¥authorized_keys」のパーミッションを設定
  43. 43. CentOS 7 へ公開鍵セット • 公開鍵コピー(Windows 10) scp C:¥Users¥mura¥.ssh¥mura_rsa.pub` root@192.168.33.75:~/ • 公開鍵セット(CentOS 7 Server) cd ~ mkdir -p .ssh chmod 700 .ssh cat mura_rsa.pub >> .ssh/authorized_keys • パーミッション調整(CentOS 7 Server) chmod 640 .ssh/authorized_keys
  44. 44. Windows Server へ公開鍵セット • 公開鍵コピー(Windows 10) scp C:¥Users¥mura¥.ssh¥mura_rsa.pub` Administrator@192.168.33.83:C:¥Users¥Administrator • 公開鍵セット(Windows Server) Get-Content C:¥Users¥Administrator¥mura_rsa.pub | Add-Content C:¥Users¥Administrator¥.ssh¥authorized_keys • パーミッション調整(Windows Server) . “C:¥Program Files¥OpenSSH¥FixHostFilePermissions.ps1” ` -Confirm:$false
  45. 45. 公開鍵接続 • パスワードと同様に接続 • 初回のみ明示的に秘密鍵を –KeyFilePath で指定 • Enter-PSSession ` -HostName 172.24.58.55 ` -UserName root ` -KeyFilePath ~¥.ssh¥mura_rsa
  46. 46. Demo • Windows 10 → CentOS 7 Server 公開鍵 • Windows 10 → Windows Server 公開鍵
  47. 47. Linux で PowerShell が使えると 何がうれしいの? • プラットフォームを気にせずにスクリプトが書ける • オブジェクトなので、プロパティがそのまま使える • Linux から Windows の管理が簡単にできる • Linux のシェルスクリプトとして普通に使える • Windows なエンジニアの Linux 敷居が下がる
  48. 48. まとめ
  49. 49. • マルチプラットフォームで使えるようになった PowerShell • 5.1 以前とは別物 • クロスプラットフォーム接続は ssh を使う • Server 側には sshd が必要 • 公開鍵認証が使える
  50. 50. Q&A
  51. 51. 参考情報 • リモート コンピューターの対話操作(Enter-PSSession) • http://www.vwnet.jp/Windows/PowerShell/EnterPSSession.htm • リモート コンピューターのバッチ操作(Invoke-Command) • http://www.vwnet.jp/Windows/PowerShell/InvokeCommand.htm • リモート コンピューターのパラレル バッチ操作(Invoke-Command -AsJob) • http://www.vwnet.jp/Windows/PowerShell/Invoke-CommandAsJob.htm • PowerShell 6 へリモート接続する(Windows 編) • http://www.vwnet.jp/Windows/PowerShell/2018020501/ConnectRemotePS6.htm • PowerShell 6 へリモート接続する(クロスプラットフォーム/パスワード認証編) • http://www.vwnet.jp/Windows/PowerShell/2018031701/PsRemoteOverSSH.htm • PowerShell 6 へリモート接続する(クロスプラットフォーム/公開鍵認証編) • http://www.vwnet.jp/Windows/PowerShell/2018032101/PsRemoteOverSSHwKey.htm • 今日から使う PowerShell • http://www.vwnet.jp/Windows/etc.asp#GettingStartedWithPowerShell

×