使用sed命令注释Subsystem sftp /usr/libexec/openssh/sftp-server行并在后面添加内容Subsystem sftp internal-sftp
时间: 2024-08-13 16:10:26 浏览: 119
你可以使用`sed`命令来注释掉`Subsystem sftp /usr/libexec/openssh/sftp-server`这一行,并在其后追加新的内容`Subsystem sftp internal-sftp`。这里是一个例子:
```bash
$ sed -i 's/^Subsystem sftp \+/# &/' /etc/ssh/sshd_config && echo "Subsystem sftp internal-sftp" >> /etc/ssh/sshd_config
```
解释一下这个命令:
- `sed -i`: 在原文件(这里是`/etc/ssh/sshd_config`)上直接修改,`-i`选项表示立即在原文件中进行编辑。
- `s/^Subsystem sftp \+/# &/`: 这是一个正则表达式的替换操作,`^Subsystem sftp`匹配的是以`Subsystem sftp`开始的行,`\+`用于匹配一个或多个空格,`# &`将整个匹配行加上井号注释(`#`)。所以原来的行就会被注释掉。
- `echo "Subsystem sftp internal-sftp" >> /etc/ssh/sshd_config`: 这是在命令末尾追加新内容,`>>`操作符用于向文件末尾追加。
执行完上述命令后,原始的`sftp`服务会被注释掉,并新增了`internal-sftp`的子系统。
相关问题
使用sed命令注释Subsystem sftp /usr/libexec/openssh/sftp-server行并在其下一行添加内容Subsystem sftp internal-sftp
你可以使用`sed`命令来注释掉`Subsystem sftp /usr/libexec/openssh/sftp-server`这一行,并在其下一行添加新的`Subsystem`。这里是一个简单的步骤:
首先,你需要打开你想要编辑的SSH配置文件,通常是`/etc/ssh/sshd_config`。然后,你可以使用以下`sed`命令来达到目的:
```bash
sudo sed -i '/Subsystem sftp /usr/libexec/openssh/sftp-server/c\' \
'#Subsystem sftp /usr/libexec/openssh/sftp-server' \
'/^$/a subsystem sftp internal-sftp' /etc/ssh/sshd_config
```
解释一下这个命令:
- `sed -i`: 这是在原地(in place)修改文件,`-i`选项会直接对`sshd_config`文件进行操作而无需先备份。
- `/Subsystem sftp /usr/libexec/openssh/sftp-server/`: 此处为正则表达式,匹配到包含指定路径的`sftp`子系统行。
- `c\`: 表示将找到的行替换为(comment out with a hash mark "#")。
- `#Subsystem sftp /usr/libexec/openssh/sftp-server`: 新的行,前面加上井号`#`表示注释该行。
- `/^$/a subsystem sftp internal-sftp`: 如果当前行为空(即没有其他内容),就在其后追加`subsystem sftp internal-sftp`。
执行完上述命令后,`Subsystem sftp /usr/libexec/openssh/sftp-server`行会被注释掉,并在其下方添加了新的`Subsystem sftp internal-sftp`。
阅读全文