Quero excluir esta string:
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Faça login como usuário \"centos\" em vez de usuário \"root\".';echo;sleep 10"
no arquivo abaixo:
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Faça login como usuário \"centos\" em vez de usuário \"root\".';echo;sleep 10" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCV9sc7lTrpAJb1UARLmNA08XD8Dy0hGJiX1E5qYk8MkH36xbBtcO6xeuncFr619pu+R/08jkYn9GIXlgPzD9THUpEI+m/OSp5nVPgIamiN7Lud OSks6zwk9THkxeSmW95KNEHW5h8Y8MoB0wXzGdr0yiV32nLmvyG18JU6
Responder1
O arquivo é um authorized_keys
arquivo para SSH, frequentemente encontrado em ~/.ssh/authorized_keys
. Ele possui vários campos, e o campo que você deseja remover é o primeiro campo opcional de "opções".
O segundo campo é o campo "keytype", que terá um dos valores ecdsa-sha2-nistp256
,
ecdsa-sha2-nistp384
, ecdsa-sha2-nistp521
, ssh-ed25519
, ssh-dss
ou
ssh-rsa
, conforme sshd
manual.
Podemos usar este fato para remover o campo de opções:
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
Ou você pode usar sed -i ...
para alterar o arquivo no local se souber como isso geralmente funciona no seu Unix (o -i
sinalizador funcionaum poucodiferentemente em diferentes implementações de sed
).
O sed
comando de edição s/^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))/\1/
corresponderá à expressão regular estendida ^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))
e substituirá o texto correspondente pelo tipo de chave encontrado na linha. A expressão corresponde a qualquer coisa, desde o início de cada linha de entrada até, e inclusive, um dos tipos de chave válidos.
Responder2
sed -i 's/your_string//g' filename
Você provavelmente precisará escapar de alguma pontuação em your_string.