Windowsで自動でssh再接続~Bitvise SSH Clientを用いる~

はじめに

自宅にWindows PCがあり、Windows PCへ接続するためにssh ポートフォワーディングを用いて、踏み台サーバ経由で外出先からsshしています。

Ubuntuであれば、autosshコマンドを用いて、sshが切れた際に自動的に再接続させることが簡単にできます。 Windows PCで同じことをやりたいということで行ったことの備忘録です。

取りうる選択肢

次のことを行えば、自動で再接続させることができると思います。

  • Cygwinを用いて、autosshを用いる
  • Bitvise ssh clientを用いる
  • PuTTYというSSH Clientを用いて、接続が切れたときに再接続するバッチを何らかの方法で走らせる

今回は2番目のBitvise SSH Clientを用いる方法で行きます。 個人的にはこれが簡単だと思います。

Bitvise SSH ClientでSSHを行う

Bitvise SSH Clientのインストール

Bitvise SSH Clientのダウンロードページに行き、SSH Clientをダウンロード、インストールします。

ここは難しいことはないと思います。

Bitvise SSH clientでSSH接続する

今回は、SSH keyで接続する方法を説明します。

鍵を作る

まず、起動しLoginタブのClient key managerを開きます。

image.png

ここで、下のほうにGenerate newというボタンがあると思うので、そこを押し、いい感じに設定し鍵を作ります。

image.png

鍵を作ると、先ほどのClient key manager上で作成した鍵が表れていると思います。それを選択し、Exportと押すと、Public keyを得ることができます。 それをサーバに登録します。

SSHする

先ほどのLoginタブに戻り、いい感じにServerAuthenticationの欄を埋めます。 この状態で、Log inとするとSSHすることができます。

この状態でもうサーバが一時的にダウンしたとしても自動的に再接続される状態になっていると思います。

Port forwardingする

サーバ側の3389番ポートへの通信を、Windows PCの3389番ポートへ転送します。 この場合は、S2Cのタブを開き次のように設定します。

image.png

これでLog inすると、ポートフォワードができると思います。

PC起動時に自動的にSSH接続するようにする

プロファイルを保存する

左側のSave Profile Asで適当な場所に、clientの設定を保存します。

コマンドからClientを起動する

コマンドからClientを起動させることができます。 具体的には次のようになると思います。

BvSsh.exe -profile=C:\Path\to\hoge.bscp -loginOnStartup

これでバックでClientが立ち上がり、SSH loginした状態になると思います。

スタートアップに登録する

先ほどのコマンドをWindowsのスタートアップに登録します。 こうすることで、Windowsの起動時に自動的にClientが立ち上がりサーバに接続されます。 サービスとして登録するほうが正統らしいですが、いまのところこれで十分なのでokです。

おそらくスタートアップに登録する方法はいろいろあると思いますが、自分はショートカットを作成しました。

Windows+Rshell:startupを実行します。

image.png

そうすると、ファイルエクスプローラが起動するので、そこにBitvise SSH Clientのショートカットを作成します。 自分の環境では、リンク先として次を指定しました。

"C:\Program Files (x86)\Bitvise SSH Client\BvSsh.exe" -profile=C:\Path\to\hoge.bscp -loginOnStartup

この状態でタスクマネージャのスタートアップアプリを見ると、BvSsH.exeみたいにBitvise SSH Clientが登録されています。

以上で、外出する際は、PCの電源ボタンを入れていくだけでSSHされた状態になります。

おわりに

参考になれば幸いです。

参考文献

https://laubit.blogspot.com/2017/01/putty.html https://www.mazn.net/2020/10/2085.html https://yohei-a.hatenablog.jp/entry/20140902/1409629766 https://www.kmc.gr.jp/advent-calendar/ssh/2013/12/11/autossh.html#fn:bitvise