
この文字列を削除したいです。
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 - rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCV9s E5qYk8MkH36xbBtcO6xeuncFr619pu +R/08jkYn9GIXlgPzD9THUpEI+m/OSp5nVPgIamiN7LudOSks6zwk 9番目のkxeSmW95KNEHW5h8Y8MoB0wXzGdr0yiV32nLmvyG18JU6
答え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
。
editsed
コマンドはs/^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))/\1/
拡張正規表現と一致し、^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))
一致するテキストをその行で見つかったキータイプに置き換えます。この式は、各入力行の先頭から有効なキータイプの1つを含むすべての項目に一致します。
答え2
sed -i 's/your_string//g' filename
your_stringで一部の句読点文字をエスケープする必要があるかもしれません。