이 문자열을 삭제하고 싶습니다.
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-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCV9sc7lTrpAJb1UARLmNA08XD8Dy0hGJiX1E5qYk8MkH36xbBtcO6xeuncFr619pu+R/08jkYn9GIXlgPzD9THUpEI+m/OSp5nVPgIamiN7LudOSks6 zwk9THkxeSmW95KNEHW5h8Y8MoB0wXzGdr0yiV32nLmvyG18JU6
답변1
파일은 authorized_keys
SSH용 파일로, ~/.ssh/authorized_keys
. 여기에는 여러 필드가 있으며 제거하려는 필드는 첫 번째 선택적 "옵션" 필드입니다.
두 번째 필드는 매뉴얼 에 따라 ecdsa-sha2-nistp256
,
ecdsa-sha2-nistp384
, ecdsa-sha2-nistp521
, ssh-ed25519
또는 값 중 하나 ssh-dss
를 갖는 "keytype" 필드입니다 .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
.
편집 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에서 일부 구두점을 이스케이프해야 할 수도 있습니다.