LoginSignup
5
3

More than 3 years have passed since last update.

Windowsにおける秘密鍵の管理場所について

Posted at

うまくいく事例

Windows端末でソフトウェア開発を行っている場合、TeratermやMobaXTermなどのターミナルエミュレーターでLinux端末に接続する機会は往々にしてあると思います。

私の場合、これまで占有Windows 10クライアントからターミナルエミュレーターを利用してきたため、SSHに利用する秘密鍵等についても、ディレクトリパスを簡単にするために何気なくCドライブ直下に置いたWorkspaceディレクトリにて管理していました。

これらのターミナルエミュレーターだと、秘密鍵の指定にたとえばC:\workspace\keys配下に設置したファイルを指定しても、問題なく接続できます。
(もしかしたら今後のアップデート次第でできなくなる可能性もありますが…)

うまくいかない事例

しかし、VSCodeのRemote Developmentプラグインを利用してSSH接続しようとすると、以下のような設定ではエラーが出て接続できません。

設定:

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host remoteVM
    HostName XXXX
    User myuserid
    IdentityFile C:\workspace\id_rsa

接続NGとなるログ:

[15:17:36.314] Got stderr from ssh: OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.4
[15:17:36.316] Running script with connection command: ssh -D 55695 remoteVM bash
[15:17:36.321] Install and start server if needed
[15:17:36.757] > 
[15:17:36.757] Got some output, clearing connection timeout
> Warning: Permanently added 'XXXX' (ECDSA) to the list of known hosts.
> 
> 
[15:17:39.816] > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions for 'C:\\workspace\\id_rsa' are too open.
> It is required that your private key files are NOT accessible by others.
> This private key will be ignored.
> Load key "C:\\workspace\\id_rsa": bad permissions
> id@XXXX: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
> 
> プロセスが、存在しないパイプに書き込もうとしました。
> 
[15:17:40.108] "install" terminal command done
[15:17:40.108] Install terminal quit with output: プロセスが、存在しないパイプに書き込もうとしました。
[15:17:40.108] Received install output: プロセスが、存在しないパイプに書き込もうとしました。
[15:17:40.109] Failed to parse remote port from server output: プロセスが、存在しないパイプに書き込もうとしました。
[15:17:40.110] 
[15:17:40.111] TELEMETRY: {"eventName":"resolver","properties":{"outcome":"failure","reason":"UnparsableOutput"},"measures":{"resolveAttempts":1,"retries":1}}
[15:17:40.111] ------

対処方法

bad permissionsとか書いてあるので、最初はファイルパーミッションの問題かと思ってgit bashからchmod 700 id_rsaなどでパーミッションを修正したりしてみましたが、変わらず接続不可となります。

考えればすぐわかる問題かもしれませんが、Windowsの場合、秘密鍵のようなパーソナルなデータは、Cドライブ直下のような全ユーザーで共有されるようなディレクトリではなく、各利用者のパーソナルデータを格納するための"Users"配下に設置する必要がありました。

以下の通り、ファイルの置き場所を変更すれば、アクセス可能となります。

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host remoteVM
    HostName XXXX
    User myuserid
    IdentityFile C:\Users\myid\.ssh\id_rsa

自分自身の占有マシンであろうが、秘密鍵の設置場所には注意が必要ですね…。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3