web-dev-qa-db-ja.com

公開鍵をリモートホストに送信するコマンド

必要なリモートホストに公開キーを送信するコマンドがあることを覚えています。この機能を使用して、公開鍵の1つを他のホストに送信します。どうやってやるの?

35
user482594

ssh-copy-idを探しています。このコマンドが行うのは、.ssh.ssh/authorized_keysを作成し、それらが存在しない場合はそれらの権限を適切に設定することだけです。次に、公開鍵を.ssh/authorized_keysの末尾に追加します。

58
cdhowie

あなたはこのコマンドを探しているかもしれません:

cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'

サーバーの承認済みキーに公開キーを追加します。

ソース

14
Flaudre

サーバーがすでに パスワードベースのログインを受け入れない に設定されている場合、Permission denied (publickey)エラーが発生する可能性があります。

これは、netcatを使用してキーを送信するもう1つの方法であるため、認証する必要はありません。ローカルネットワークでのみ機能しますが、ポートフォワーディングを使用してインターネット経由でこれを行うことができます。

サーバー上:

$ nc -l 55555 >> ~/.ssh/authorized_keys

クライアントで(HOSTNAMEをサーバーのホスト名またはIPに置き換えます):

$ nc HOSTNAME 55555 < ~/.ssh/id_rsa.pub

55555は、選択したオープンポートに置き換えることができます。

ソース: lanからlinuxへのチャット?


初心者向けの付録:これについてはまだ誰も触れていないと思いますが、ERROR: failed to open ID file '/home/username/.pub': No such fileを取得した場合は、最初にキーを生成する必要があります。 Ubuntuのヘルプページには、 Generating RSA Keys に関する優れたガイドがあります。

2
Keith

選択した答えは正しいですが、keygen + copyを組み合わせたい人のための簡単なbashスクリプトは次のとおりです: https://Gist.github.com/wilcollins/bc420581da87962b8b47

このファイルは、クライアントマシンにSSHキーを作成し、適切なファイル権限を適用し、ローカルの〜/ .sshディレクトリにコピーし、指定されたサーバーにコピーします。

0
wilco