我想刪除這個字串:
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo '請以使用者\"centos\"而非使用者\"root\"登入。';echo;sleep 10"
在下面的文件中:
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo '請以使用者\"centos\"而非使用者\"root\"登入。';echo;sleep 10" ssh- rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCV9sc7lTrpAJb1UARLmNA08XD8Dy0hGJiX1E5qYk8MkH36xbBtcO6xeuncFr619pu+R/08jkYn996xbBtcO6xeuncFr619pu+R/08jkYn9GIXNTHm mW95KNEHW5h8Y8MoB0wXzGdr0yiV32nLmvyG18JU6
答案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
。
編輯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 中的一些標點符號。