如何更改的价值,让我们说,PasswordAuthentication在/etc/ssh/sshd_config中命令?
同样,删除我希望重视的“键”前面的 #。这些不必都在一个命令中。我设置了相当多的服务器,并记住一切都让人筋疲力尽,所以我想获得一系列我可以复制粘贴的命令,它为我完成工作以供将来参考。
示例值:
PermitRootLogin no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
UseDNS no
Run Code Online (Sandbox Code Playgroud)
Ken*_*ned 13
正则表达式和 sed 可以帮助处理这样的事情。
sed -re 's/^(PasswordAuthentication)([[:space:]]+)no/\1\2yes/' -i.`date -I` /etc/ssh/sshd_config
Run Code Online (Sandbox Code Playgroud)
在我的 Debian 系统PasswordAuthentication no上PasswordAuthentication yes,无论键和值之间有多少空格,这都会切换到。
它将在创建原始文件的备份时替换文件中的选项(就地编辑),后缀由日期 ( sshd_config.2014-05-28)命名。
切换位置为是和否以切换其他方式。
删除前导的表达式#是这样的:
sed -re 's/^(\#)(PasswordAuthentication)([[:space:]]+)(.*)/\2\3\4/'
Run Code Online (Sandbox Code Playgroud)
- 并插入前导 -#符号:
sed -re 's/^(PasswordAuthentication)([[:space:]]+)(.*)/#\1\2\3/'
Run Code Online (Sandbox Code Playgroud)
要#在前面使用可选的-sign切换一行(感谢 Barlop):
sed -re 's/^(\#?)(PasswordAuthentication)([[:space:]]+)no/\2\3yes/'
Run Code Online (Sandbox Code Playgroud)
在所有这些表达式中,您可以更改PasswordAuthentication为您想要更改的任何其他选项 - 甚至可能将其设为 shell 脚本中的一个键,并制作一个“sshd 选项切换工具”。
Sed 和 regex 都很有趣和游戏,但我确信 Valentin 是正确的,如果你有很多系统,配置管理是要走的路。就我个人而言,我只是在几个很少更改的系统上使用 etckeeper/bazaar - 这不是配置管理,但它为我提供了版本控制,因此在我搞砸了正则表达式和sed -i. :)
有多种选择可供选择:
在尝试猜测您要去哪里之后,您可能无论如何都想考虑使用配置管理。
Augeas及其命令行工具 - augtool - 可以配置/etc/ssh/sshd_config. 例如:
augtool --autosave 'set /files/etc/ssh/sshd_config/PasswordAuthentication yes'
Run Code Online (Sandbox Code Playgroud)
要设置所有值,请使用:
SSHD_UsePAM=no
SSHD_UseDNS=no
augtool << EOF
set /files/etc/ssh/sshd_config/PermitRootLogin no
set /files/etc/ssh/sshd_config/ChallengeResponseAuthentication no
set /files/etc/ssh/sshd_config/PasswordAuthentication no
set /files/etc/ssh/sshd_config/UsePAM ${SSHD_UsePAM}
set /files/etc/ssh/sshd_config/UseDNS ${SSHD_UseDNS}
save
EOF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10663 次 |
| 最近记录: |