7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ssh-copy-idがデフォルトで選択する鍵ファイル

Last updated at Posted at 2022-04-21

久しぶりにssh-copy-idで鍵を配置しようとしたら、うまくいかなかったので調べてみました。

何が起きたか

ssh-copy-id my-serverを実行したら、
id_rsa.pubではなく、全然違う鍵ファイルid_boot2docker.pubをコピーしようとした。

原因とssh-copy-idの仕組み

ssh-copy-id-i <鍵ファイル>オプションを指定しない場合、デフォルトでどの鍵ファイルが選択されるかというと、次のような実装によって決定されます(ssh-copy-idってシェルスクリプトなんですね)。

most_recent_id="$(cd "$HOME" ; ls -t .ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1)"
DEFAULT_PUB_ID_FILE="${most_recent_id:+$HOME/}$most_recent_id"

つまり、id*.pubid*-cert.pubを除く)にマッチするファイルのうち、タイムスタンプが最新のものが使われるわけですね。

自分の環境では、Docker Machineを入れたときに生成されたid_boot2docker.pubid_rsa.pubよりも新しかったため、そちらが選択されたということだったようです。

明示的に鍵を指定しよう

ssh-copy-idするときは-iで明示的に鍵を指定したほうがよいでしょう。

(おまけ)秘密鍵しかない場合

ちなみに秘密鍵しかない場合は、自動的に公開鍵を生成してくれるなどという気の利いたことはしてくれず、エラーになります。

$ ssh-copy-id -i ~/.ssh/test_rsa my-server

/usr/bin/ssh-copy-id: ERROR: failed to open ID file '/Users/username/.ssh/test_rsa.pub': No such file or directory
7
2
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
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?