이 문자열을 삭제하고 싶습니다.
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-ed25519
ssh-dss
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
.
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에서 일부 구두점 문자를 이스케이프해야 할 수도 있습니다.