authorized_keys
Jenkinsを使用してDockerコンテナを起動するときは、ホストにJenkins Pubkeyを追加する必要があります。解決策を探していますが、インターネット上で準備された解決策が見つかりません。当然のように思えるかもしれませんが、少なくとも私にとってはそうではありません。 :)
答え1
PUBKEY=$(cat ~/.ssh/id_rsa.pub); grep -q "$PUBKEY" ~/.ssh/authorized_keys || echo "$PUBKEY" >> ~/.ssh/authorized_keys
この 1 行のコードはauthorized_keys
pubkey がファイルにすでに存在するかどうかを確認し、そうでない場合はファイルの末尾に追加します。
~/.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_keys
sort -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