🗝️

Unityのパッケージ取得にパスフレーズ付きの秘密鍵を使う

2021/09/07に公開

Unityのパッケージマネージャで、githubなどのプライベートリポジトリを使えるようになりましたが、git@github.com:user/repo.gitのようなSSH形式でパスフレーズ付きの秘密鍵を使うとエラーになるので対策を調べてみました。

方法は以下のサイトに書いてある通りなので、英語が読める方はこの記事の通りに進めれば大丈夫です。WindowsとMacの対策方法が記載されています。
https://docs.unity3d.com/Manual/upm-errors.html#ssh-add

概要としては、OpenSSHのサービスを起動し、パスフレーズ付きの秘密鍵を追加してUnityから実行可能にする設定を行います。

以下の環境で試してみました。

  • Windows10
  • UnityHub 3.0.0-beta4
  • Unity2020.3.17f1
  • Git for Windowsをインストールしている
  1. Windows10標準のOpenSSHがインストールされていることを確認する


無ければインストールしてください。

  1. %PATH% 環境変数にOpenSSHが存在することを確認する

システム環境変数を開きC:\WINDOWS\System32\OpenSSH\ というようなOpenSSHのパスが登録されていることを確認します。

Git for Windowsを入れている場合は、Git for Windowsのパスよりも前にOpenSSHのパスを置く必要があるようです。

  1. PowerShellを管理者権限で起動し、以下のコマンドを入力する
Get-Service ssh-agent | Set-Service -StartupType Automatic
ssh-agent
  1. SSH鍵を追加する

PowerShellで以下のコマンドを入力します。

ssh-add

パスフレーズを聞かれるので入力します。

鍵の名前をデフォルトから変更している場合は、鍵名を指定します。

ssh-add <your-secure-ssh-key-name>

鍵の名前を忘れた場合は、以下のコマンドで鍵を指定します。

ssh-add -l
  1. Git for Windowsを入れている場合は、WindowsのOpenSSHを使うように環境変数を変更する
[Environment]::SetEnvironmentVariable("GIT_SSH", "$((Get-Command ssh).Source)", [System.EnvironmentVariableTarget]::User)

完了まで少し時間がかかるようです。

  1. UnityHubとUnityを再起動する

アプリを再起動すれば大丈夫そうですが、私の環境では、PCごと再起動しないとうまく反映されないようでした。

これで、プライベートリポジトリに置いたUnityパッケージを、パッケージマネージャから取得できるようになります。なかなか情報が少なくて調べるのに苦労しましたw

Discussion