概要
Windowsをホストマシンとして使うことを前提に、Linux/UNIX系のOSの管理をやろうとしたときに、僕にとってはPuTTYやTeraTermよりも、OpenSSH for Windowsをいれた方が良かったというお話し。
背景
今、家(デスクトップ)でも外(ノート)でも、個人ではWindowsマシンを使っています。なお、会社ではMBAです。
Windows環境で、たとえばVirtualBox + Vagrant、たとえばAmazon EC2のような環境にログインしようと思ったらPuTTYなり、TeraTermなり、Poderosaなり、ChromeのSSHクライアント使うなりといった選択肢になるんだと思います。
決まったホスト(IP)にしかログインしないのであれば、GUIで設定してそれらでも全然良いんですけど、たとえばコマンドラインでvagrant ssh
コマンドは直接はたたけないですし、EC2をぼこぼこ建てたりつぶしたりしたときにIPが変わるときにはなかなか面倒です。EC2はまだ良いとして、vagrantでいくつかインスタンス作ったときにvagrant ssh app
とかができないのは結構きつい…。
一方で、CygwinとかSUAはちょっと大げさすぎるし…。
そこで、一瞬思いついたのは、バッチファイルやGolangで、OpenSSHのssh
コマンドと同様のものをパースして、PuTTYなどに渡してやるという案だったんですが、ただただ不毛であることに気づきまして。
根本的な話として、デスクトップのOSをLinuxにするとか、Linuxの仮想マシンを動かすという案もありましたが、仮想マシンでは結局どれか使わないと入れないし*1、そこそこゲームとかもしたいので、Windowsホストの方がうれしいのです。
「新しくMacでも買えば良いじゃん」と言うのは、お金くれるなら考えます。そこまでもらえてないです。辛い。
一番早い方法として、Windows版のOpenSSHを入れればそれだけで解決して、ちゃんと生産性があがったので紹介します。
これです。
Windows用のSSH調べると、古いバージョンを配布してるのはすぐ引っかかるんですが、新しいのはここくらいしかなさそうです。やったらあたらしいです。ecdsa鍵だけじゃなくて、ed25519鍵もいけちゃうよ☆*2
もちろん、コマンドラインからvagrant ssh
もいけちゃいます。
ただし
自己責任でお願いしますね。
Linuxとか、最近だと、yumとかaptとかどこから落としてくるか大体分かるからいいけど、Win32だとそういう機構もないので、その辺りが辛いです*3。良い感じの認証機関とかないんですか。ないんでしょうね。
補足
ごめんなさい、生産性があがったのはSSHのおかげだけでは無いです。コマンドプロンプトをやめて、ConEmuを入れて、git-bash使うようになりました。とりあえず、今の手元の環境はこれでいいかなって思っています。