しばたテックブログスマートフォン用の表示で見るしばたテックブログPowerShellを中心に気分で書いている技術ブログです。PowerShell以前に、stknohg.hatenablog.jpなんて記事を書いたのですが、ちょっと前にMicrosof公式のSSHDが発表されたので、freeSSHdで試していた部分をOpenSSHに変えて遊びなおしてみました。8.1にFabricをインストールしてみます。基本的に手順は前回と同じでOKです。2.7.10をダウンロードしてインストールしてください。2.7(http://aka.ms/vcpython27)も併せてインストールしてください。Pythonをインストールした後はpipからFabricをインストールできます。cuisine現時点でFabricはfabric-1.10.2、cuisineはcuisine-0.7.11です。WindowsをSSHサーバーにするここからがメインになります。GitHub)から最新のリリースを取得します。今回は11_09_2015版のOpenSSH-Win32.zipを使用します。OpenSSH-Win32.zipを解凍し、任意のディレクトリに展開します。(現時点ではパスにスペースが含まれていると正しく動作しない部分があるのでその点だけは注意してください。)今回はC:\OpenSSHに展開します。展開後はssh-keygen.exeを使い公開鍵・秘密鍵の生成を行います。以下のコマンドを実行しパスフレーズは適当に入力してください。22ポートを開けます。SSH次に、setup-ssh-lsa.cmdを実行し鍵認証のための設定を行います。実行後はマシンを再起動します。個のファイルをコピーしました。-fこの操作を正しく終了しました。Restart-Computer再起動後はSSHDのインストールですが、今回はSFTPも使いたいのでC:\OpenSSH\sshd_configを開き、以下の部分を編集します。installを実行しサービスのセットアップを行います。"sshd").StatusRunningSSHDサービスが起動されれば成功です。WindowsでFabricで遊ぶ前回と同じことをして動作を確認してみます。実行するfabfile.pyとコマンドの実行例は以下の様な感じです。前回のよりちょっとだけ詳細にしてみました。前回のFreeSSHdの場合から特に変わった点はなく、ちょっと試す分には問題はありませんでした。SSHDは変わりましたがシェルが変わるわけではないのでWindowsの制約もほとんどそのままです。sudoメソッドは使えません。シェルをPowerShellにした場合、fabric.context_managers.cdやfabric.context_managers.prefixは使えません。get、putメソッドはSFTPのルート配下のディレクトリに対してのみ使えます。→この制約はSFTPDが変わったことでディレクトリの制約を受けなくなっていました。fabric.colorsは使えません。ほかにもいろいろ制約はあります...また、前回気が付かなかった点で、Fabricではrunメソッドで実行するコマンドに$があると自動でエスケープされるため、変数定義に$を使うPowerShellのコマンドを実行する場合は注意が必要です。$を使う場合はshell_escape=Falseとパラメータを明示する必要があります。全体的な感想としてはMicrosoft公式のSSHDという事で導入の敷居が低いくらいなのがFreeSSHdと比べて良い点でしょうか。面白い結果は出せませんでしたがこんな感じです。前回の記事を参考*1にDjangoのデプロイまでをやっている方がいらっしゃいます。thinkami.hatenablog.comrunメソッドを連続実行するとエラーになるのに対応されていたりしてかなり面白い内容です。私が試した時は[20h[?7hの謎のエスケープシーケンス(らしきもの)は同様に出ましたがコマンドがエラーになることはありませんでした。TermやWinSCPを使って"普通"にOpenSSHを試してみます。Termで普通にログインできます。ログインすると以下の様な画面(vagrantユーザーでログインしています)になります。シェルはcmd.exeでした。日本語の表示も特に問題なかったです。-*2をつける必要があります。これをつけないとコマンド実行時にハングします。適当にコマンドを実行してみましたが特に問題はありませんでした。タブ補完が利かないので結構ストレスは溜まります。個人的にはコマンド入力の補完も利くPSRemotingの方がまだまだ便利だと感じました。Linux等をメインに使う方にとってはすべてがSSHで完結する方が便利かもしれません。SFTPDへの接続WinSCPを使いSFTPでログインすると以下の様な感じになります。ホームディレクトリはユーザープロファイル(C:\Users\vagrant\)でした。このディレクトリより上位のディレクトリにもアクセス可能なのですが、C:\ドライブ直下にアクセスしようとすると以下のエラーになりました。この動作について、OpenSSHクライアントのsftp.exeを使って挙動を試してみたのですが、C:\ドライブ直下にアクセスするのにできる方法とできない方法があり、バグなのか仕様なのかよくわからない感じでした。C:\そのうちこの辺の挙動もはっきりしてくるとは思います。*1:あんなお遊びの記事を見てもらってありがたいやら申し訳ないやらです。標準入力を表しています。牟田口先生ありがとうございます。広告スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。