この文字列を削除したい:
no-port-forwarding、no-agent-forwarding、no-X11-forwarding、command="echo 'ユーザー \"root\" ではなく、ユーザー \"centos\" としてログインしてください。';echo;sleep 10"
以下のファイル内:
no-port-forwarding、no-agent-forwarding、no-X11-forwarding、command="echo 'ユーザー \"root\" ではなく、ユーザー \"centos\" としてログインしてください。';echo;sleep 10" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCV9sc7lTrpAJb1UARLmNA08XD8Dy0hGJiX1E5qYk8MkH36xbBtcO6xeuncFr619pu+R/08jkYn9GIXlgPzD9THUpEI+m/OSp5nVPgIamiN7LudOSks6zwk9THkxeSmW95KNEHW5h8Y8MoB0wXzGdr0yiV32nLmvyG18JU6
答え1
ファイルはauthorized_keys
SSH 用のファイルで、 によく見られます~/.ssh/authorized_keys
。このファイルにはいくつかのフィールドがあり、削除するフィールドは最初のオプションの「オプション」フィールドです。
2 番目のフィールドは「keytype」フィールドで、マニュアルに従ってecdsa-sha2-nistp256
、、、、、 またはecdsa-sha2-nistp384
のいずれかecdsa-sha2-nistp521
の値が設定されます 。ssh-ed25519
ssh-dss
ssh-rsa
sshd
この事実を利用して、オプション フィールドを削除することができます。
sed -E 's/^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))/\1/' ~/.ssh/authorized_keys >~/.ssh/authorized_keys.new &&
mv ~/.ssh/authorized_keys.new ~/.ssh/authorized_keys &&
chmod go-rwx ~/.ssh/authorized_keys
または、sed -i ...
Unixでこれが通常どのように機能するかを知っている場合は、ファイルを変更するには、フラグを使用することができます(フラグ-i
はわずかにの異なる実装では異なりますsed
。
編集sed
コマンドは、s/^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))/\1/
拡張正規表現に一致し^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))
、一致したテキストを行にあるキー タイプに置き換えます。この表現は、入力の各行の先頭から有効なキー タイプまでの任意のものに一致します。
答え2
sed -i 's/your_string//g' filename
your_string 内の一部の句読点をエスケープする必要がある可能性があります。