因此,我知道我可以通过修改为 来禁用通过 ssh 进行的密码验证/etc/ssh/sshd_config
。PasswordAuthentication Yes
我PasswordAuthentication no
想确保每个用户只能通过密钥文件进行 ssh 登录。
是否有一个很好的单行命令可以设置此选项?
答案1
我成功测试了这一点:
sudo sed -E -i 's|^#?(PasswordAuthentication)\s.*|\1 no|' /etc/ssh/sshd_config
if ! grep '^PasswordAuthentication\s' /etc/ssh/sshd_config; then echo 'PasswordAuthentication no' |sudo tee -a /etc/ssh/sshd_config; fi
这将用于sed
就地编辑文件。除了用 替换后面的内容外PasswordAuthentication
,no
它还将删除行首的注释,Ubuntu 上默认有注释。如果此命令运行第二次或第三次,则文件不会发生其他更改。
第二行将配置选项添加到文件中,以防它以某种方式被删除。