Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
マルチプラットホームになった
PowerShell 6 で
クロスプラットホームする
Syuichi Murashima
アジェンダ
• PowerShell って何でしたっけ?
• OSS に生まれ変わった PowerShell
• PowerShell でクロスプラットホーム
自己紹介
• MURA/村嶋修一
• 千葉県松戸市在住
• Windows系プラットフォーム全般担当 @ ソシャゲ屋さん
• MS MVP for Cloud and Datacenter Management
• http://www.vwn...
こんな本書きました
4
PowerShell って何でしたっけ?
PowerShell の特徴
• 従来のスクリプトを刷新したWindows用シェルスクリプト
• 新たな管理インターフェイス( PS > GUI )
• 様々なリソースがハンドリングできる
• リモート操作も得意
• オブジェクト
• プログラ...
ライトにも、ヘビーにも、ディープにも
• ライト
• 電卓
• プログラム ランチャー
• ヘビー
• 大量台数の環境構築/設定変更
• 大量台数へのプログラムインストール
• ディープ
• .NET Framework
• WMI
• Win...
コマンドレットとオブジェクト
• コマンドレット = PowerShell 専用コマンド
• オブジェクト
• プロパティにアクセス
• メソッドも準備されている
ハンドリングできる豊富なリソース
• OS、役割、ミドルウェア設定
• ファイルシステム、共有、レジストリ、イベントログ
• テキスト、CSV、JSON、XML、DB
• DOS コマンド実行と結果処理
• WebAPI、SOAP を使った W...
.NET Framework / WMI ハンドリング
• .NET Framework / WMI が簡単に使える
• コマンドレットで実現出来ない事が実現可能
• 高度な処理も簡単に実装可能
OSS に生まれ変わった
PowerShell
OSS対応バージョン
• 6.0 から OSS 対応に進化
• 5.1 と 6.0 の互換性は高いが別物
• 今後の機能拡張は 6 以降だけ
• 5.1 は、セキュリティ update と bug fix のみ
• 5.1 のサポートは今後も続く
GitHub で公開
• GitHub - PowerShell/PowerShell: PowerShell for every system!
• https://github.com/PowerShell/PowerShell
動作可能なプラットフォーム
Windows 7 SP1+/2008 R2+
Linux
Red Hat Enterprise 6, 7
CentOS, Oracle Linux 7
Fedora 26,27
Debian 9,8.7+
Ubun...
6.0 のプラットフォーム間互換性
本体プログラム名
Windows : pwsh.exe
CentOS 7 : pwsh
文法 互換(試した限り)
コマンドレット数
Windows : 482
CentOS 7 : 318
コマンドレットオプ...
5.1 と 6.0 の互換性(Windows 10)
本体プログラ名
5.1 : C:¥Windows¥System32¥WindowsPowerShell¥v1.0¥powershell.exe
6.0 : C:¥Program Files¥...
PowerShell で
クロスプラットホーム
従来のリモーティング アーキテクチャ
接続元(Windows)
PowerShell
接続先(Windows)
PowerShell
WinRM ServiceWinRM(PS/Object) FW
5.1 以前環境を Linux から操作する場合
接続元(Linux)
pywinrm 等
接続先(Windows)
PowerShell
WinRM ServiceWinRM(Text) FW
クロスプラットホーム
リモーティング アーキテクチャ
接続元(Windows/Linux/Mac)
PowerShell
PowerShell
sshdssh(PS/Object) FW
接続先(Windows/Linux/Mac)
ssh
WinRM と ssh の切り替え
• リモーティング コマンドレットのオプションで切り替え
• WinRM
• Enter-PSSession
-ComputerName 172.24.58.68
-Credential administra...
Windows 10(1803) を
クロスプラットフォーム Client にする
• PowerShell 6 インストール
(1803 から Open-SSH Client が default インストール済み)
PowerShell 6 インストール
• GitHub からインストーラーをダウンロード
• https://github.com/PowerShell/PowerShell/releases/download/v6.0.2/P
owerSh...
CentOS 7 を
クロスプラットフォーム Server にする
• PowerShell 6 インストール
• sshd 設定
• sshd 再起動
CentOS 7 に PowerShell 6 インストール
# Install PowerShell
sudo yum install
https://github.com/PowerShell/PowerShell/releases/dow...
sshd 設定と再起動
• sshd 設定ファイル
/etc/ssh/sshd_config
• sshd_config を編集
• Subsystem powershell /usr/bin/pwsh -sshs -NoLogo –NoPro...
Demo 環境
Demo
• Windows 10 → CentOS 7 Server
Windows Server を
クロスプラットフォーム Server にする
• PowerShell 6 インストール
• Win32-OpenSSH インストール
• ssh 受信用に Windows ファイヤーウォール穴あけ(tcp/2...
Win32-OpenSSH インストール
• GitHub からダウンロード
• https://github.com/PowerShell/Win32-OpenSSH/releases
• 直リン
• https://github.com/P...
ssh ファイヤーウォール穴あけ
• GUI か PowerShell で TCP/22 を開く
New-NetFirewallRule `
-Name sshd `
-DisplayName “OpenSSH Server (sshd)” `...
ssh へ Path を通す
• GUI か setx で ssh へ Path を通す
# Add Path
setx /m Path ($env:Path + ";" + (Join-Path $env:ProgramFiles OpenS...
サービス自動起動設定/起動
• GUI か PowerShell で sshd サービスの自動起動設定
Set-Service sshd -StartupType Automatic
• sshd 起動
Start-Service sshd
sshd サービス設定と起動
• sshd 設定ファイル
• C:¥ProgramData¥ssh¥sshd_config
• sshd_config を編集
• Subsystem powershell C:¥Program Files¥Po...
CentOS 7 を
クロスプラットフォーム Client にする
• PowerShell 6 インストール
Demo
• CentOS 7 Client → Windows Server
• Windows 10 → Windows Server
公開鍵を使う
接続元(Windows/Linux/Mac)
PowerShell
PowerShell
sshdssh(PS/Object) FW
接続先(Windows/Linux/Mac)
ssh
公開鍵
秘密鍵
ssh-agent
公開鍵環境作成
• Client(Windows 10 1803)
• 鍵ペア作成
• ssh-agent の自動起動設定と起動
• 秘密鍵のパスフレーズを ssh-agent に登録
• Server
• 公開鍵配置
• パーミッション設定
Client でキーペア作成
• ユーザープロファイルディレクトリ直下の「.ssh」フォルダに
鍵ペアを作る
• ssh-keygen -t rsa -f 鍵ファイル名
ssh-agent の自動起動設定と起動
• GUI か PowerShell で ssh-agent を自動起動設定し起動
# start setting ssh-agent
Set-Service ssh-agent -StartupTyp...
パスフレーズを ssh-agent に登録
• 秘密鍵のパスフレーズを ssh-agent に登録
• ssh-add 秘密鍵ファイルパス
Server へ
公開鍵の設置とパーミッション設定
• ユーザープロファイルディレクトリ直下の
「.ssh¥authorized_keys」に公開鍵を追加
• 「.ssh¥authorized_keys」のパーミッションを設定
CentOS 7 へ公開鍵セット
• 公開鍵コピー(Windows 10)
scp C:¥Users¥mura¥.ssh¥mura_rsa.pub`
root@192.168.33.75:~/
• 公開鍵セット(CentOS 7 Server)...
Windows Server へ公開鍵セット
• 公開鍵コピー(Windows 10)
scp C:¥Users¥mura¥.ssh¥mura_rsa.pub`
Administrator@192.168.33.83:C:¥Users¥Admi...
公開鍵接続
• パスワードと同様に接続
• 初回のみ明示的に秘密鍵を –KeyFilePath で指定
• Enter-PSSession `
-HostName 172.24.58.55 `
-UserName root `
-KeyFile...
Demo
• Windows 10 → CentOS 7 Server 公開鍵
• Windows 10 → Windows Server 公開鍵
Linux で PowerShell が使えると
何がうれしいの?
• プラットフォームを気にせずにスクリプトが書ける
• オブジェクトなので、プロパティがそのまま使える
• Linux から Windows の管理が簡単にできる
• Linu...
まとめ
• マルチプラットフォームで使えるようになった PowerShell
• 5.1 以前とは別物
• クロスプラットフォーム接続は ssh を使う
• Server 側には sshd が必要
• 公開鍵認証が使える
Q&A
参考情報
• リモート コンピューターの対話操作(Enter-PSSession)
• http://www.vwnet.jp/Windows/PowerShell/EnterPSSession.htm
• リモート コンピューターのバッチ操作...
マルチプラットホームになった PowerShell 6 でクロスプラットホームする
Prochain SlideShare
Chargement dans…5
×

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

13 vues

Publié le

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

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

マルチプラットホームになった 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

×