Unyablog.

のにれんのブログ

脱 PuTTY をしようとした話

この記事は KMCアドベントカレンダー 11日目の記事です。

adventar.org

昨日は id:nakario_jp さんで、「KMCとボードゲーム超人ロック」」 でした!

nakario.hateblo.jp

WSL で脱 PuTTY しようとして便利に暮らしているが、 Windows 側のツール群はまだ無理そうだという話をします。

PuTTY の機運

PuTTYWindows における SSH Client として定番で、今まで使っていた。

そんな中、他の OS では OpenSSH を使い慣れており、 Windows だけ違うのは面倒だった。

OpenSSH と PuTTY の違い

OpenSSH と PuTTY では色々と違っていて、

などなど*1

OpenSSL / OpenSSH に関する PuTTY の言い分も多少分かるが、普段使っているものと統一したい。

また、設定画面の文字が小さくて高 dpi だと目が疲れるという問題も割とある…。

f:id:nonylene:20181222235812p:plain

SSH Client としての WSL

ということで、「SSH Client + tty」としての用途では WSL (Windows Subsystem for Linux) を使うことにした。mingw とかでもいいのだけど、

  • クライアントとして使うだけなら Windows のファイルに触る必要はない
    • むしろ Linux 側の config で Windows 側のホームを汚さなくて良いとも言える
  • そこそこちゃんとした Ubuntu 環境で使える
    • mingw 特有の知識が不要、既存のツールが使える

といった理由で選ばなかった。

ただ、WSL 特有の困りは多少あって、October update かかるまで ssh-agent がエラー吐いてて辛かった*2

github.com

Windows のデフォルトのコンソールは微妙なので、 WSLtty という mintty が作っている WSL 用のアプリケーションを使っている。

github.com

基本的に mintty なので、ターミナルエミュレータ面ではほとんど困っていない*3。tmux 等もちゃんと使えて便利。

WSL 側で Port forwarding しても、ちゃんと Windows 側の Chrome で見れる。

Windows 側どうするか

これで PuTTY は不要、めでたしめでたし…ではなく、 git や scp を Windows 側で使うときの問題がある。 WSL の中で ssh-agent を立ち上げていても Windows 側からは見えない。

なので、 git bash からは毎回パスフレーズを打つはめになってしまっていた。

WSL 側で Windows 側の ssh-agent を使う

WSL 側で ssh-agent を立ち上げずに、 Windows 側のを使うという方法。以下のような変換してくれるものがあるので、これを使えばいけそう。

github.com github.com

今回は結局使っていない。

Windows 側で別に立ち上げる

Pagent を使えば解決するが、今回は脱 PuTTY をしたいので Microsoft が最近開発している OpenSSH を使ってみる。

https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_overview

この機能を使うと、cmd.exe や PowerShell で OpenSSH コマンド群が使える。

インストールしたら ssh-agent のサービスが入っているので、これを有効にすれば ssh-add なども使えるようになる!!すごい!!

f:id:nonylene:20181222233324p:plain

…のだけど、まだ WinSCP がこれに対応していなかった。 バグトラッカーにはある状態。

winscp.net

一応 scp コマンドは cmd.exe から使えるが、 WinSCP のほうが便利なので脱 PuTTY は先になりそう*4。まあ Pagent 使うだけなら追加するだけだし目が疲れないのでいいか…。

ちなみに git bash では

$ /c/WINDOWS/System32/OpenSSH/ssh -tt ...

としたら agent も認識して接続できた。(が、Ctrl-D などが使えない?)

補足

cmd.exe の ssh が使えるなら cmder なり使えば ssh-agent が2つ必要な問題は解決では?

それでも良いのだけど、Linux / Ubuntu の環境の方が慣れているので。mingw にしなかったのと同じような理由。

今日は何日ですか?

平成30年12月22日です。今23日になりました。

まとめ

結局 PuTTY を完全に脱することはできず、 Pagent (+ PPK) は使うことになった*5

結局言いたかったのは WSL + WSLtty が便利ということです。

遅刻してすみません

明日は id:yamunaku さんで、「競プロコンテストサイトを7つぐらいまとめる」だそうです!どのような記事になるか楽しみですね…!*6

yamunaku.hatenablog.com

yamunaku さんのアイコンは「はたらく UFO」ですね。自分は結構前に全部クリアしました!! HAL 研開発の買い切りスマホゲームでおすすめです。

play.google.com

ところでおすすめの曲があって、「more one night」っていうんですけど、おすすめです。最近は「ローリング△さんかく」もよく聞いてます。

*1:そもそも CUIGUI という違いもある

*2:しかも昔開発者モードをオンにしていたので無限にアップデート失敗していた

*3:極稀に再起動しないと再描画されないことがあるが、 mintty 側か WSLtty 側なのかは不明

*4:WinSCP に OpenSSH 形式の鍵を渡すと PPK に変換されるので、脱 PPK もできない

*5:実は Windows であまり開発しないこともあって、この記事を書くときに初めて Microsoft の OpenSSH を見た

*6:11日前から存在しています