sshでログインしたリモートlinuxマシンからgithubアクセスしようと思うと、githubに登録した秘密鍵が必要なんだけど、秘密鍵を複数のマシン上においておきたくはないよね。
なので、ssh-agentというのを使って、自分のPC上にある秘密鍵を登録しておけば、リモートマシン内に鍵がなくてもgithubアクセスができる、というのが一般的なssh-agentの説明。
じゃあそれをWindowsでやろうとするとどうなんの?特に、VSCodeでremote developmentを使ってリモートにログインしているとき、ちょとgit clone したかったり、コミットしたけどgit pushだけWSL立ち上げないとできないみたいな悲しい状態はさけたい。
いにしえの昔には、フリーソフトでPuttyというのがあってこれでssh-agentが実現されていたりしたのだけれど、2019年の世界では、OpenSSH for Windowsを使う。インストール手順
で、このドキュメントの続きにあるOpenSSH Key Managementを読むと、こんな感じで、powershell上でssh-agent(を含むssh-utils)をインストールすることになっている
# Install the OpenSSHUtils module to the server. This will be valuable when deploying user keys.
Install-Module -Force OpenSSHUtils -Scope AllUsers
# Start the ssh-agent service to preserve the server keys
Start-Service ssh-agent
# Now start the sshd service
Start-Service sshd
でもこれ残念ながらぼくの環境ではうまく入らなかった
のだけど、そもそもWindows10にssh-agentが含まれているぽくて(?)、コントロールパネルから有効化したら普通に使えるようになった
んでpowershellから公開鍵を登録する
PS C:\Users\mogya> ssh-add C:\Users\mogya\.ssh\id_ed25519
Identity added: C:\Users\mogya\.ssh\id_ed25519 ([email protected])
すると、VSCode Remote developmentのコンソール上でもssh-agentが効いた状態でsshアクセスができるようになる
daisuke@linode17:~/develop$ ssh -T [email protected]
Hi mogya! You've successfully authenticated, but GitHub does not provide shell access.