Remote-SSH プラグイン実行時にcould not to establish connection to エラー

Remote-SSH: Connect Host 実行時に失敗する

Visual Studio Codeの Remote-SSH プラグイン使用時に、could not to establish connection to “xxx”というダイアログが出て接続でないトラブルに見舞われた。

ログのウインドウを見ると、下記の通り、Windows 10(Windows 10 1903)の標準OpenSSHクライアントを使っていて、その際にsshのconfigファイルに”permissions”がないと言われて、止まっている。

[12:17:43.264] SSH Resolver called for "ssh-remote+xxx.xxx.xxx.jp", attempt 1
[12:17:43.264] SSH Resolver called for host: xxx.xxx.xxx.jp
[12:17:43.264] Setting up SSH remote "xxx.xxx.xxx.jp"
[12:17:43.288] Using commit id "26076a4de974ead31f97692a0d32f90d735645c0" and quality "stable" for server
[12:17:43.290] Testing ssh with ssh -V
[12:17:43.340] ssh exited with code: 0
[12:17:43.340] Got stderr from ssh: OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
[12:17:43.342] Running script with connection command: ssh -T -D 50829 xxx.xxx.xxx.jp bash
[12:17:43.344] Install and start server if needed
[12:17:43.346] Terminal shell path: C:\WINDOWS\System32\cmd.exe
> ;C:\WINDOWS\System32\cmd.exe

[12:17:43.430] Got some output, clearing connection timeout
[12:17:43.438] >
[12:17:43.460] > Bad owner or permissions on C:\\Users\\XXXXXXXXX/.ssh/config
>>>
[12:17:43.469] > プロセスが、存在しないパイプに書き込もうとしました。
>
[12:17:43.905] "install" terminal command done
[12:17:43.906] Install terminal quit with output: プロセスが、存在しないパイプに書き込もうとしました。
[12:17:43.906] Received install output: プロセスが、存在しないパイプに書き込もうとしました。
[12:17:43.906] Stopped parsing output early. Remaining text: プロセスが、存在しないパイプに書き込もうとしました。
[12:17:43.906] Failed to parse remote port from server output
[12:17:43.906] Resolver error:

解法

こちらの中盤に書いてあるように
sshのconfigファイルのパーミションを修正するツールを導入、パーミション変更をする。

管理者モードでPowershellを立ち上げて、下記を順に実行する。

> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

> Install-Module -Force OpenSSHUtils -Scope AllUsers

> Repair-UserSshConfigPermission ~/.ssh/config
> Get-ChildItem ~\.ssh\* -Include "id_rsa","id_dsa" -ErrorAction SilentlyContinue | % {
Repair-UserKeyPermission -FilePath $_.FullName @psBoundParameters
}

しかし、ここも以下のようなエラーが出て、うまく行かないことがある。

PackageManagement\Install-Package : ファイル 'OpenSSHUtils.psd1' の Authenticode 署名が無効なため、モジュール 'OpenSSHUtils' をイン
ストールまたは更新できません。
発生場所 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1809 文字:21
+ ... $null = PackageManagement\Install-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package]、Exception
+ FullyQualifiedErrorId :
InvalidAuthenticodeSignature,ValidateAndGet-AuthenticodeSignature,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage

上記の場合、証明書のチェックを外すために、2行目のInstall-Module で-SkipPublisherCheckオプションを指定して再実行。

Install-Module -Force OpenSSHUtils -Scope AllUsers -Verbose -SkipPublisherCheck

ここまでうまく行ったら、再度、Repair-UserSsshConfigPermission の部分からやり直すと良い。

Visual Studio CodeでAnaconda環境を使う

Visual Studio CodeでAnacondaの環境を指定する

Anacondaで作成したPythonの仮想環境を指定してViusual Studio Code上でスクリプトを実行する手順を書く。Microsoft製のPython エクステンションを使うので、まずはそれをインストールする。
基本的な手順は、マイクロソフトのページのここを参照する。

また、作るスクリプトごとに使う環境は違うだろうから、File->Open Workplaceにて、ワークプレースを開いた状態にする。そうすると、次にワークプレース開くときも設定が有効になる。

やり方

  1. コマンドパレット(Ctrl+Shift+P)を呼び出す
  2. Python:Select Interpreter コマンドを呼び出す
  3. 呼び出した環境で、ホームディレクトリ(WindowsならC:\Users\ユーザーネーム )のAnaconda3ディレクトリの下にある、作った環境名と同じフォルダを指定する。
  4. 以後、Ctrl+@などでターミナルを開くと、自動的にcondaが呼ばれて指定した環境になる。

Mozcを郵便番号対応にする

MozcとGoogle日本語入力の違いを調べてみると、辞書が違うということと(Mozcはgoogleのロボットが集めてきた辞書ではなく、IPAの辞書を使っている)、郵便番号から住所の変換がサポートされていないということがわかった。

とこらが、ソースのsrc/data/dictionary_ossにあるREADME.txtを読むと、郵便局のホームページからダウンロードしたデータを加工してソースに取り組むためのPythonスクリプトが準備されていた。

早速やってみました。mozc_base.exeというファイルが少し大きくなりましたが、地名のほか、事業者が登録することができる追加の郵便番号の情報も取り込むことができました。

前回同様にバイナリをこちらにおいておきました。

このREADME.txtを読むとWebからの大規模単語辞書は公開されませんでしたがMozc自体の性能を上げるために固有表現や「社員証」といった複合語などはIPA辞書から追加して強化してくれているようです。

WindowsでKivyを使う

Windowsにpip install kivyをした後にスクリプトを動かそうとすると、次のようなエラーが出てしまう。


[WARNING] [Config      ] Older configuration version detected (0 instead of 20)
[WARNING] [Config      ] Upgrading configuration in progress.
[INFO   ] [Logger      ] Record log in C:\Users\xxx.kivy\logs\kivy_19-01-27_0.txt
[INFO   ] [Kivy        ] v1.10.1
[INFO   ] [Python      ] v3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_pil, img_gif (img_sdl2, img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: pil(['text_sdl2'] ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider.
sdl2 - ImportError: DLL load failed: 指定されたモジュールが見つかりません。
File "C:\Program Files\Python36\lib\site-packages\kivy\core__init__.py", line 59, in core_select_lib
fromlist=[modulename], level=0)
File "C:\Program Files\Python36\lib\site-packages\kivy\core\window\window_sdl2.py", line 26, in <module>
from kivy.core.window._window_sdl2 import _WindowSDL2Storage

pip kivyだけでは足りなくて、以下の通りいくつかのパッケージを入れる。anacondaの場合はpipをcondaに読み替えてください。

pip install kivy
pip install docutils pygments pypiwin32 kivy.deps.sdl2
pip install kivy.deps.glew

さらに、日本語を出すためにはフォントのダウンロードして、設定する必要がある。
IPAフォントの場所