SSH 구성을 보호하기 위해 RHEL 7에서 /etc/ssh/sshd_config 파일을 편집한다고 가정해 보겠습니다.
대체하고 싶습니다. Ciphers 줄을 예로 들어 그대로 두고 주석 처리해 보겠습니다. 또한 Red Hat이 rpm을 업데이트하거나 iso를 설치할 때마다 문자열이 깨지는 것을 방지하기 위해 문자열의 가장 작은 부분을 끌 수 있기를 원합니다.
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
되어야 한다...
#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789 etc...
파일 이름이 testfile이고 내용이 This is my test file인 테스트 파일에서 개행 문자를 찾거나 추가하려고 합니다. "아니요, 새 줄이 아닙니다"라고 추가하려고 했지만 처참하게 실패했습니다.
sed -i '/This is my test file./aNo it's not.' testfile
어떻게 해야 하며, 더 중요하게는 그 뒤에 숨은 핵심 개념은 무엇입니까?
답변1
아래 sed 명령을 사용해 보았는데 완벽하게 작동합니다.
주문하다
sed -i '/^Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-c/s/.*/#&\nCiphers abc-123,def-456,ghi-789/g' filename
산출
#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789
답변2
sed -i -n 'p; s/^Ciphers/#&/p' /etc/ssh/sshd_config
-i
제자리에
-n
명시적으로 인쇄되지 않는 한 아무것도 인쇄하지 않음
/p
검색 문자열 끝에 강제로 인쇄하여 -n
일치하는 문자열을 효과적으로 덮어씁니다.