デフォルトでは、ssh-copy-id -i blah.pub user@host は、-i で指定された公開鍵の秘密鍵形式でログインしますか、それとも ~/.ssh/id_rsa でログインしますか?

デフォルトでは、ssh-copy-id -i blah.pub user@host は、-i で指定された公開鍵の秘密鍵形式でログインしますか、それとも ~/.ssh/id_rsa でログインしますか?

は、-i で指定された秘密鍵の公開鍵形式でログインしますかssh-copy-id -i blah.pub user@host、それとも でログインしますか~/.ssh/id_rsa?

答えが、SSH がデフォルトで使用するキーである ~/.ssh/id_rsa, / を使用してログインし、-i で指定された公開キーの秘密キー形式を使用してログインしないということである場合、なぜここでエラーが発生するのでしょうか?

私は秘密鍵と公開鍵のペア rodney と rodney.pub を持っています。ファイル rodney の名前を roddney に変更し、ssh-copy-id -i ./rodney.pub user@ip を実行すると、ログインして追加が行われるはずですが、「エラー: ID ファイル './rodney' を開けませんでした: そのようなファイルはありません」というエラーが表示されます。roddney の名前を rodney に変更すると、そのエラーは表示されません。ssh-copy-id が実行するのは ssh (デフォルトでは id_rsa を使用してログイン) と rodney.pub のコピーだけなのに、なぜ秘密鍵 rodney が必要で、気にするのでしょうか?

答え1

ssh-copy-id -i blah.pub user@host は、-i で指定された公開鍵の秘密鍵形式でログインしますか、それとも ~/.ssh/id_rsa でログインしますか?

-i で指定された公開鍵の秘密鍵形式ではログインしません。

ssh がデフォルトで使用するキーでログインします。 ~/.ssh/id_rsa (ただし、ssh-agent が実行中の場合は、ssh は他のキーを試す可能性がありますが、いずれにしても、-i で指定された公開キーの秘密キー形式でログインすることはありません)。ssh-agent が実行されていないと仮定しましょう。これは、質問でも想定されていると思います。

答えが、SSH がデフォルトで使用するキーである ~/.ssh/id_rsa, / を使用してログインし、-i で指定された公開キーの秘密キー形式を使用してログインしないということである場合、なぜここでエラーが発生するのでしょうか?

私は秘密鍵と公開鍵のペア rodney と rodney.pub を持っています。ファイル rodney の名前を roddney に変更し、ssh-copy-id -i ./rodney.pub user@ip を実行すると、ログインして追加が行われるはずですが、「エラー: ID ファイル './rodney' を開けませんでした: そのようなファイルはありません」というエラーが表示されます。roddney の名前を rodney に変更すると、そのエラーは表示されません。ssh-copy-id が実行するのは ssh (デフォルトでは id_rsa を使用してログイン) と rodney.pub のコピーだけなのに、なぜ秘密鍵 rodney が必要で、気にするのでしょうか?

少し前にこの件について ssh の専門家と話しました。

私の使用ケースは、ラップトップといくつかの VPS があり、1 つの VPS から他のすべての VPS に SSH/SFTP でアクセスしたいというものでした。私のラップトップは、すでにすべての VPS に SSH アクセスできました。

私が実行できたのは、ラップトップでキー ペアを生成し、公開キーをすべての VPS に ssh-copy-id でコピーすることです。次に、生成した秘密キーをラップトップから最初の VPS に移動またはコピーします。

しかし、私がやったこと(それが私を困惑させ、問い合わせさせるエラーにつながった)は、ラップトップでキーペアを生成し、生成した秘密鍵をラップトップから最初の VPS にコピーしたことです。その後、ラップトップではもうその秘密鍵は必要ないと判断したため(間違っていました)、ラップトップからその秘密鍵を削除しました。ssh-copy-id は、どの VPS にもログインするためにそれを使用しない(正しく判断した)ためです。そこで、そのようにしたssh-copy-id -i blah.pub user@IPofFirstVPS ところ、エラーが発生しました。

ssh-copy-id にはキーペアが必要なので、秘密キーと公開キーの両方が必要です。

したがって、そうする場合は、ssh-copy-id -i blah.pub user@host 指定された公開鍵ファイルの秘密鍵形式が期待されます。

そうするとssh-copy-id blah、ファイル名に .pub が書き込まれ、 が実行されます ssh-copy-id blah.pub。したがって、末尾に .pub を追加して、秘密キーのファイル名ではなく公開キーのファイル名を指定することもできます。

しかし、秘密鍵が必要なのは「安全性チェック」のためだけです。つまり、これは単に、リモートの authorized_keys ファイルに公開鍵を追加する前に行うテストです。理論的には、ログインして追加を行うためにそのチェックを行う必要さえありません。

これは、将来、指定した公開 ID の秘密鍵形式を使用して、ssh-copy-id を実行したマシンからリモート ホストに SSH 接続する可能性があることを予測 / 推測していますが、おそらくその推測は間違っています。そのため、ssh-copy-id を実行しているマシンでその秘密鍵が必要になります。(他のマシンでその秘密鍵を使用する目的でキー ペアを生成したのではなく、そのマシンが他の多くのマシンに SSH アクセスできるため、使用しているマシンから ssh-copy-id を使用しているだけである可能性があるとは考えていません)。

ssh-copy-id は、公開鍵ペアの秘密鍵形式でログインしません。

ssh-copy-id には -o オプションがあり、ログインに使用する秘密鍵を指定できます。

ssh-agent をセットアップしていないため、ssh は秘密鍵 ~/.ssh/id_rsa で接続します。これは、-i で指定された公開鍵に関係なく、ssh-copy-id がログインするときに使用する秘密鍵です。ただし、-i で指定された公開鍵の秘密鍵ファイル名が存在するかどうかは引き続きチェックされます。

ssh-copy-id はスクリプトです。たとえば、#!/bin/sh次のように始まるので、スクリプトに精通している人は cat/vim を実行して確認することもできます。

関連情報