サーバーのキーリングにキーはもう必要ありません。削除することは可能ですか?このコマンドを使用してキーを追加しました。
curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
助けてくれてありがとう
最初に、追加したキーのキーIDを見つける必要があります。次のコマンドでこれを行います。
Sudo apt-key list
所有しているすべてのキーがリストされ、各エントリは次のようになります。
pub 1024R/B455BEF0 2010-07-29
uid Launchpad clicompanion-nightlies
削除するキーを特定したら、Sudo apt-key del <keyid>
コマンドを使用します。<keyid>
は、キーリングから削除するキーの実際のキーIDに置き換えられます。
$ Sudo apt-key del B455BEF0
$ apt-key list | grep clicompan
$
16.10では、listコマンドを使用したときに短いキーIDは表示されなくなりましたが、実際には長いヘックスの最後の8文字です。
たとえば、次のキーのキーID
/etc/apt/trusted.gpg.d/ubuntu-keyring-2012-cdimage.gpg
------------------------------------------------------
pub rsa4096 2012-05-11 [SC]
8439 38DF 228D 22F7 B374 2BC0 D94A A3F0 EFE2 1092
uid [ unknown] Ubuntu CD Image Automatic Signing Key (2012) <[email protected]>
キーIDはEFE21092になります
簡単にするために短いスクリプトを作成し、IDの代わりに文字列を使用しました。
キーに既知の一意の文字列が含まれている場合は、スクリプトを使用できます。
例えば。私の場合、webminの場合
pub 1024D/11F63C51 2002-02-28
uid Jamie Cameron <[email protected]>
sub 1024g/1B24BE83 2002-02-28
このスクリプトを使用して対応するキーを削除するよりも、システムのwebminキーにのみjcameron
があると確信しています。
~/removeAptKey
として保存しました
そしてそれを実行します
Sudo ./removeAptKey jcameron
出力は次のようになります
KEYID: 11F63C51
OK
私のスクリプトは次のとおりです。
#!/bin/bash
function printKeys(){
echo "Installed keys are"
echo ""
Sudo apt-key list
}
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
if [[ $# -eq 0 ]]
then
echo "No key name provided"
exit 1
fi
UNIQUE=$1
Sudo apt-key list | grep "${UNIQUE}" -B 1 > result.temp
LENGTH=$(cat result.temp | wc -l)
if [[ ${LENGTH} -gt 2 ]]
then
echo "Attention you found more than 1 key. Use a more specific string."
printKeys
exit 2
fi
if [[ ${LENGTH} != 2 ]]
then
echo "Key not found. Doing nothing."
printKeys
exit 3
fi
KEYID=$(cat result.temp | grep 'pub' | cut -d " " -f 4 | cut -d "/" -f 2)
echo "KEYID: "$KEYID
apt-key del ${KEYID}
rm result.temp
最初に、キーのブロックの上の2行を取得します。
Sudo apt-key list
:通常通りaptキーをリストしますgrep '${UNIQUE}' -B 1
:一意のキー文字列を含む行のみを取得jcameron
および-B 1
前の行> result.temp
:ファイルに保存します(後で削除されます)これがちょうど2行を返す場合(->ちょうど1つのキーを取得しました)に進みます
grep 'pub'
:pup
キーIDを持つ行のみを取得しますcut -d " " -f 4
:その行の4番目の単語を取得します(最初はpub
で、2つのスペースが来ます。cut -d "/" -f 2
:/
の後の部分のみを取得しますそして最後にこのキーを削除してクリーンアップします
apt-key del ${KEYID}
(私の場合は11F63C51
)rm result.temp
:このファイルはもう必要ありません私は遅れる可能性があることを知っていますが、これを達成するためにこの1行のコマンドを共有したかっただけです。
NOTE:これは、出力が一意のキーである場合にのみ機能します。
buntuバージョン16.04まで(2018-12-22更新):
apt-key del $(apt-key list | awk 'NR=='$(apt-key list | grep --line-number --regexp "FOOBAR" | cut --fields 1 --delimiter ":")'{print;exit}' | awk '{print $2}' | cut --fields 2 --delimiter "/")
ここで、FOOBAR
はUID名です。
16.10からのUbuntuのバージョン:
apt-key del $(apt-key list | awk 'NR=='`expr $(apt-key list | grep --line-number --regexp "FOOBAR" | cut --fields 1 --delimiter ":") - 1`'{print;exit}')
ここで、FOOBAR
はUID名です。