localhostのauthorized_keysにssh pubkeyを追加する(既存のキーをスキップ)

localhostのauthorized_keysにssh pubkeyを追加する(既存のキーをスキップ)

authorized_keysJenkinsを使用してDockerコンテナを起動するときは、ホストにJenkins Pubkeyを追加する必要があります。解決策を探していますが、インターネット上で準備された解決策が見つかりません。当然のように思えるかもしれませんが、少なくとも私にとってはそうではありません。 :)

答え1

PUBKEY=$(cat ~/.ssh/id_rsa.pub); grep -q "$PUBKEY"  ~/.ssh/authorized_keys || echo "$PUBKEY" >> ~/.ssh/authorized_keys

この 1 行のコードはauthorized_keyspubkey がファイルにすでに存在するかどうかを確認し、そうでない場合はファイルの末尾に追加します。

~/.ssh/id_rsa.pub追加された公開鍵のパスです。

~/.ssh/authorized_keysこれはターゲットファイルへのパスですauthorized_keys~シンボルはホームディレクトリです/home/accountname/)。

リモートホストの場合は、次のものを使用できます。ssh-copy-id

答え2

~/.ssh/authorized_keys の使用に関するアイデア全体をスキップし、次のように SSH CA 機能を使用することをお勧めします。https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca-to-validate-hosts-and-clients-with-ubuntu(「ユーザーキーの設定方法」まで下にスクロールしてください)。

これの利点は、コンテナを一度だけ設定し(ローカルシステムで生成されたCAキーの公開部分を含むTrustedUserCAKeys /etc/ssh/users_ca.pub場所を追加してusers_ca.pub)、その時点からコンテナへのアクセスを他のユーザーに付与したい場合です。鍵、CA 秘密鍵で鍵の公開部分に署名し、署名した鍵を使用できるアカウントを指定するだけです。魔法のように動作します:)

答え3

公開鍵がにあると仮定すると、それを無条件にファイル~/.ssh/id_rsa.pubに追加し、そのファイルで使用して重複エントリを削除できます。~/.ssh/authorized_keyssort -u

# Make sure that the file exists and has the correct permissions
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# Add new key, removing duplicates.
sort -u -o ~/.ssh/authorized_keys ~/.ssh/authorized_keys ~/.ssh/id_rsa.pub

関連情報