sed나 Perl을 사용하여 파일에서 이 문자열을 어떻게 제거할 수 있나요?

sed나 Perl을 사용하여 파일에서 이 문자열을 어떻게 제거할 수 있나요?

이 문자열을 삭제하고 싶습니다.

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 - rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCV9sc7lTrpAJb1UARLmNA08XD8Dy0hGJiX1E5qYk8MkH36xbBtcO6xeuncFr619pu+R/08jkYn9GIXlgPzD9THUpEI+m/OSp5nVPgIamiN7LudOSks6zwk 9번째 kxeSmW95KNEHW5h8Y8MoB0wXzGdr0yiV32nLmvyG18JU6

답변1

파일은 authorized_keys일반적으로 SSH 파일 입니다 ~/.ssh/authorized_keys. 여기에는 여러 필드가 있으며 제거하려는 필드는 첫 번째 선택적 "옵션" 필드입니다.

두 번째 필드는 "keytype" 필드인데 매뉴얼에 따르면 이 필드의 값은 ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, 중 하나이다.ssh-ed25519ssh-dssssh-rsasshd

이 사실을 활용하여 옵션 필드를 제거할 수 있습니다.

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.

edit 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에서 일부 구두점 문자를 이스케이프해야 할 수도 있습니다.

관련 정보