Git for Windowsに同梱のSSHクライアントでviがおかしい

この記事は約2分で読めます。

この問題は以下の環境で発生しました

  • Windows
  • Windows Terminal
  • Vagrant
  • VirtualBox
  • Git Bash

問題

Vagrant で仮想環境を立ち上げ、vagrant sshで接続します。そして vi コマンドでファイルを編集しようとすると、カーソルキーが期待通りに動作してくれません。カーソルが動くのではなく画面が点滅します。

原因

これはGit for Windowsに同梱のSSHクライアントを使ってSSH接続しているのが原因です。バグなのか仕様なのかは分かりません。

解決方法

Git for Windowsのインストール時に
SSHクライアントをインストールしないようにすると、Windows標準のSSHクライアント(C:\Windows\System32\OpenSSH\/ssh.EXE)を利用するようになるので、インストールしないようにします。

すでにインストールしている場合は再度Git for Windowsのインストーラーを起動し、Use External OpenSSH を選択してインストールを完了します。

ほかの選択肢

もしくは、Git Bash以外のシェル(PowerShellなど)を使えばWindows標準のSSHクライアントを用いるかもしれません(未確認)。

SSHクライアントの確認方法

自分がどのSSHクライアントを利用しているかはvagrant ssh --debugで確認できます。ログがだーっと流れるので、その中にそれぞれ以下のような行があります。

Windows標準の sshクライアントを使っている場合

  INFO ssh: Invoking SSH: C:\Windows\System32\OpenSSH\/ssh.EXE ...

Git for Windows の sshクライアントを使っている場合

  INFO ssh: Invoking SSH: /bin/ssh ...

Windows標準のSSHクライアント

Windows標準のSSHクライアントは、セキュリティ権限のチェックが厳しいです。vagrantフォルダ以下にある .vagrant\machines\default\virtualbox\private_key のプロパティを開きセキュリティタブを選択、自分以外のユーザーをすべて削除しましょう。

コメント