Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
マルチプラットホームになった
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 でクロスプラットホームする
Nächste SlideShare
Wird geladen in …5
×

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

15 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

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

×