Windows 10 OpenSSH

Git for Windows 2.19.0 が出ていたので更新したところ、Startup フォルダに mintty で win-ssh-agent.sh を起動するショートカットを置いて使っていたのが動作しなくなった。 別のPCでも2018年6月頃に出ていた現象だったが、忙しくてしばらく放置していた。

ssh-agent をバックグラウンドで起動して、SSH_AUTH_SOCK をレジストリの環境変数に設定してくれるので、 bash を経由しなくてもデスクトップやタスクバーにあるショートカットから emacs やら Visual Studio Code を起動してもパスフレーズを聞かれなくて済むので重宝していた。

当面は mintty を普通に開いた bash から eval $(ssh-agent) ; ssh-add として、このコンソールから emacs や code 等のとコマンドを打って起動するしかない。 別のホストに接続するためのショートカットをたくさん作っているが、これが全滅するのは痛いので対策を急ぐことにする。

mintty を開いて `~/bin/win-ssh-agent.sh` と打てば、ssh-agent が常駐して、レジストリの環境変数に設定は成功する。 `C:\Program Files\Git\usr\bin\mintty.exe` への Windows のショートカットから起動するとスクリプトが正常に動かない様子。

エラーが表示されても一瞬でウィンドウが消えてしまうので、確認のため mintty のショートカットでオプションに '-h always' を付けて起動したところ、 'Pseudo-terminal will not be allocated because stdin is not a terminal.' というエラーが出ていることが分かった。 このエラーメッセージを検索したところ、『cygwin64からssh出来ないとき - Qiita』という 記事を見つけた。確かに ssh を /usr/bin/ssh と書き換えると、上記のエラーは出なくなったが、すべてのショートカットを変更するのは手間なのでやりたくない。

何気なく Windows の環境変数を Rapid Environment Editor で眺めていたところ、 いつからか PATH に `%SYSTEMROOT%\System32\OpenSSH\` というのが加わっているのを発見。 Windows 10 の設定で「アプリと機能:オプション機能の管理」で、マイクロソフト謹製の「OpenSSH クライアント」を削除してみたところ全てが解決した。 Windows 10 で OpenSSH が PATH に加わったのは、5月下旬くらいと思われるが、 Git for Windows のバージョンを上げるまでは問題なく動作していた環境もあったのが気になるが、 PATHの順序の違いだけで問題を起こす環境というのはまずい。

そもそも Linux や macos だと Keyring を参照して、ログインできていたらパスフレーズを聞いてこない状態にするのはさほど難しくないことなので、Windows でも早くなんとかしてほしい。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-14 (金) 21:10:20 (63d)