Da sua descrição, você parece querer matar opções e comentar linhas. De acordo com man 8 sshd
:
Public keys consist of the following space-separated fields: options, keytype, base64-encoded key, comment. The options field is optional. The keytype is “ecdsa-sha2-nistp256”, “ecdsa-sha2-nistp384”, “ecdsa-sha2-nistp521”, “ssh-ed25519”, “ssh-dss” or “ssh-rsa”; the comment field is not used for anything (but may be convenient for the user to identify the key).
Consequentemente, você pode fazer algo assim:
sed '
/^[ ]*$/d;
/^#/d;
s/^.* \(ecdsa-sha2-nistp256\|ecdsa-sha2-nistp384\|ecdsa-sha2-nistp521\|ssh-ed25519\|ssh-dss\|ssh-rsa\) / /' \
~/.ssh/authorized_keys
Isso pressupõe que os comentários principais não contenham ssh-dss
, ssh-rsa
, etc. Ele também pressupõe uma implementação sed(1)
que suporta OR
(ou seja, \|
).
Usar um editor de texto pode ser mais fácil e seguro. :)