Introduction

Visual Studio CodeでのSSH接続がそうなのだが、毎回自端末の公開鍵を

  1. WinSCP で転送
  2. authorized_keys に登録
  3. コピーした鍵を削除

とか面倒すぎてやってられない。

なので省力化。

ちなみに、Linux なら ssh-copy-id がある。
これは Windows の話。

How to

素晴らしい記事が存在。

前提条件として

  • ~/.ssh/id_rsa.pub (例:C:\Users\ユーザー名.ssh\id_rsa.pub) が存在
  • 送付先サーバーはSSH接続でパスワード認証が有効

とあるが、これは問題ないはず。
以下PowerShell で実行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$user="<username>"
$host="<host>"

if (!(Test-Path("~/.ssh/id_rsa.pub")))
{
Write-Host "~/.ssh/id_rsa.pub is missing" -ForegroundColor Red
exit
}

cat ~/.ssh/id_rsa.pub | ssh ${user}@${host} `
" `
mkdir -p ~/.ssh && chmod 700 ~/.ssh && `
cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys `
"