必要なリモートホストに公開キーを送信するコマンドがあることを覚えています。この機能を使用して、公開鍵の1つを他のホストに送信します。どうやってやるの?
ssh-copy-id
を探しています。このコマンドが行うのは、.ssh
と.ssh/authorized_keys
を作成し、それらが存在しない場合はそれらの権限を適切に設定することだけです。次に、公開鍵を.ssh/authorized_keys
の末尾に追加します。
あなたはこのコマンドを探しているかもしれません:
cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'
サーバーの承認済みキーに公開キーを追加します。
サーバーがすでに パスワードベースのログインを受け入れない に設定されている場合、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 に関する優れたガイドがあります。
選択した答えは正しいですが、keygen + copyを組み合わせたい人のための簡単なbashスクリプトは次のとおりです: https://Gist.github.com/wilcollins/bc420581da87962b8b47
このファイルは、クライアントマシンにSSHキーを作成し、適切なファイル権限を適用し、ローカルの〜/ .sshディレクトリにコピーし、指定されたサーバーにコピーします。