🐳

ssh-copy-idはパスワード認証でなくて良い

2024/12/31に公開

概要

ssh-copy-idは接続先のサーバーに公開鍵を登録するために利用します。以下のような場面で使うのではないでしょうか。

  1. レンタルサーバーの初期ユーザーの設定をパスワード認証から公開鍵認証に変更したい
  2. パスワード認証を無効にした後、公開鍵を追加したい

ssh-copy-idはsshを利用して公開鍵を登録します。そのため、1はパスワード認証、2は公開鍵認証を利用してログインし、公開書を登録しています。

パスワード認証

$ ssh-copy-id -i "<登録したい公開鍵のパス>" <ユーザー名>@<ホスト名>

特段sshの設定していなければ、実行時にログインユーザーのパスワードが聞かれます。パスワードを入力することで公開鍵が登録されます。

公開鍵認証

例えば以下のようなssh/configの設定を想定します。

~/.ssh/config
Host hoge
  HostName hoge.com
  IdentityFile ~/.ssh/id_rsa
  User fuga

sshを利用になるため、configの設定を元に接続を行います。以下の場合は公開鍵認証で接続できます。

$ ssh-copy-id -i "<登録したい公開鍵のパス>" fuga@hoge

ただ、毎回configの設定を追加したくない時があると思います。例えば、vagrantで構築した環境やAWSのインスタンス等接続が変わる毎に用意するのは面倒です。その場合は以下のようにsshのoptionで秘密鍵を指定すれば良いです。

$ ssh-copy-id -i "<登録したい公開鍵のパス>" -o IdentityFile=<認証用の秘密鍵のパス> fuga@hoge.com

まとめ

ssh-copy-idはsshを利用しています。そのため、sshのconfigを正しく設定できれば特に認証方法は意識する必要はないと思います。configを汚したくない場合は適宜オプションを追加して実行すれば良いと思います。

Discussion