Windowsでsshpassっぽいことをする

最近、Windows上のVS Codesshサーバー上のプログラムを編集・実行したいということがありました。編集に関してはVS Codeにliximomo.sftpという拡張機能があり、セーブしたときに自動でアップロードしてくれます。ちなみにsshpassと記事タイトルについていることからわかるように今回は公開鍵が使えない状況なのですがこの拡張機能はちゃんとパスワードも自動で入力してくれます。また、コンパイル・実行に関しても、Linuxなら、VS Codeの統合ターミナルでsshpassを打てばできます。ただし、Windowsだと、sshpassコマンドはありません。そこで、以下のようにいろいろ試してみました。

・MSYS2のpacmansshとsshpassを入れる

cygwinsshを入れ、sshpassをビルド

cygwinでexpectを入れ、パスワード入力させる

・パイプ(|)やリダイレクト(<)を使ってファイルや標準入力からパスワード入力させる

全部ダメでした(パスワードを要求されてしまう)。おそらくlinuxWindowsではパスワードをコンソール画面で入力させる仕様の何かが違うんでしょう。

諦めかけていましたが、そもそもopenssh系を使わない方法で探してみたところ、PuTTYに付属しているplinkコマンドで同じことができました。

plink.exe -load server1 -l username -pw password

こんな感じで、server1というサーバー設定(設定データはPuTTYGUI画面で作れます)を、パスワードとユーザー名を指定して読み込んで接続してくれます。

12/01追記:このままだとログインした先のLinuxでlsとかを実行したときの文字の色が反映されなかったのでANSICONをインストールしたらうまくいきました。先ほどのコマンド全体をansiconの引数として("ansicon.exe "の後に付けて)実行すればよいです。また、コマンド履歴(↑↓キーで最近使ったコマンドを自動入力できるやつ)が使えないようです。悲しいです。

12/03追記:Windows Subsystem for Linuxでsshpassをインストールしたら普通にできました。悲しいです。