PermitRootLogin的可选项

众所周知,sshd_config是sshd的配置文件,其中PermitRootLogin可以限定root用户通过ssh的登录方式,如禁止登陆、禁止密码登录、仅允许密钥登陆和开放登陆,以下是对可选项的概括:

参数类别 是否允许ssh登陆 登录方式 交互shell
yes 允许 没有限制 没有限制
without-password 允许 除密码以外 没有限制
forced-commands-only 允许 仅允许使用密钥 仅允许已授权的命令
no 不允许 N/A N/A

以上选项中,yes和no的功能显而易见,只是很粗暴的允许、禁止root用户进行登陆。without-password在yes的基础上,禁止了root用户使用密码登陆。

forced-commands-only的功能

目前看就只有forced-commands-only这个参数还不明了,网上的参考资料仅有以下说明:

If this option is set to “forced-commands-only”, root login with public key authentication will be allowed, but only if the command option has been specified (which may be useful for taking remote backups even if root login is normally not allowed). All other authentication methods are disabled for root.

大体上的意思是设置了forced-commands-only之后,root用户仅允许使用密钥登陆,然后只允许执行在command中允许的命令,这个模式通常用来供定期需要使用root用户登陆,但是只需要执行规定的脚本、命令的情形,如定期备份等周期性、固化的操作。但这其中的command到底是如何指定的,这里并没有说明,本着打破砂锅问到底的态度,翻遍了各种资料,终于找到了command这个选项该填到的地方:那就是/root/.ssh/目录下的authorized_keys文件。
默认情况下authorized_keys的文件类似下面这样子:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAt0BETg9J6hZb5Kqxy+yfNtKHfwxUELz7PqGtGiM5eNb8DHC8kj02SCFoql5rpaecMGybWRiSK8/k+EsK7TMgd4O+p6WkNyLD3WZrmVzUEPaxAdYf1eeCQooTJ+B1TKXDNlF9t8xTVsHd67HmPWYU6i3+kaDSX7cbrz2ds2zUGSozj1UQ8AJDJMbGOqpjs3nVh2EpSDgY7znqmUDnygVPiM4c3OfEzs5iCxVd4ggpPhH8d0bwy8RmPsooxJYUY4rE1C5iWCvB7P810yUFB0OilxiX9AfZa9shC3n5bqaX0ioY1eC44hFFPL602fJyKMj6w/zxN5aIeFO03Sl9+FU4YQ== root@iZ23wan41azZ

那么command就需要加载文件的开头:

command=”/bin/ps” ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAt0BETg9J6hZb5Kqxy+yfNtKHfwxUELz7PqGtGiM5eNb8DHC8kj02SCFoql5rpaecMGybWRiSK8/k+EsK7TMgd4O+p6WkNyLD3WZrmVzUEPaxAdYf1eeCQooTJ+B1TKXDNlF9t8xTVsHd67HmPWYU6i3+kaDSX7cbrz2ds2zUGSozj1UQ8AJDJMbGOqpjs3nVh2EpSDgY7znqmUDnygVPiM4c3OfEzs5iCxVd4ggpPhH8d0bwy8RmPsooxJYUY4rE1C5iWCvB7P810yUFB0OilxiX9AfZa9shC3n5bqaX0ioY1eC44hFFPL602fJyKMj6w/zxN5aIeFO03Sl9+FU4YQ== root@iZ23wan41azZ

这样就完成了配置,使用这个公钥登陆的用户,只有执行/bin/ps的权限,而且没有交互的shell,只能一次性的执行完command中的命令。

那么问题来了

细心地朋友可能发现了,因为没有交互式shell,所以command中只能添加一条命令,如果想要执行多条命令应该怎么办呢?这个时候就是伟大的shell脚本登场的时候了,把该执行的命令,全部封装到shell脚本中即可,然后再command中写上脚本的绝对路径即可。
譬如,例子脚本hi.sh:

echo This is huigher speaking
echo Now is `date`

那么执行的实际执行的效果就是(ssh连接时对ssh连接的目标做了alias):

[root@test .ssh]# ssh huigher
This is huigher speaking
Now is Sat Oct 29 16:13:36 CST 2016
Connection to 121.40.xxx.xxx closed.

光说不练假把式

说了这么多,可能各位还是有点云里来雾里去,那么就实战一下吧

配置公钥与密钥

由于forced-commands-only模式,只允许密钥的方式登录,那么就需要先配置公钥和密钥。

  1. 在本地电脑上,使用命令ssh-keygen -t rsa来生成一对密钥和公钥,过程中需要选择密钥存放的目录(/YourPath/YourPrivateKey)和密码(本例中为空)
  2. 将生成的公钥放置到远端服务器上,将公钥附加到~/.ssh/authorized_keys中,如cat id_rsa.pub >> ~/.ssh/authorized_keys
  3. 确保~/.ssh/目录的权限700,~/.ssh/authorized_keys文件的权限是600
  4. 修改/etc/ssh/sshd_config文件,确保其中填写了以下几行

    RSAAuthentication yes
    PubkeyAuthentication yes

设置forced-commands-only相关参数

  1. 修改/etc/ssh/sshd_config文件,添加以下一行:

    PermitRootLogin forced-commands-only

  2. 打开~/.ssh/authorized_keys,找到最后添加的公钥一行,在最前面加上command="/YourPath/YourFile",如:

command=”/usr/hi.sh” ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAt0BETg9J6hZb5Kqxy+yfNtKHfwxUELz7PqGtGiM5eNb8DHC8kj02SCFoql5rpaecMGybWRiSK8/k+EsK7TMgd4O+p6WkNyLD3WZrmVzUEPaxAdYf1eeCQooTJ+B1TKXDNlF9t8xTVsHd67HmPWYU6i3+kaDSX7cbrz2ds2zUGSozj1UQ8AJDJMbGOqpjs3nVh2EpSDgY7znqmUDnygVPiM4c3OfEzs5iCxVd4ggpPhH8d0bwy8RmPsooxJYUY4rE1C5iWCvB7P810yUFB0OilxiX9AfZa9shC3n5bqaX0ioY1eC44hFFPL602fJyKMj6w/zxN5aIeFO03Sl9+FU4YQ== root@iZ23wan41azZ

收尾及测试

  1. 重启sshd进程
  2. 在客户端上使用ssh进行连接:ssh root@xx.xx.xx.xx -i /YourPath/YourPrivateKey,如果嫌麻烦,也可以直接在客户端的.ssh文件夹下新建config配置文件,填写ssh主机的alias,这样就可以直接使用ssh huigher来进行连接了:

    Host huigher
    HostName 121.40.xxx.xxx
    Port 22
    User root
    IdentityFile /YourPath/YourPrivateKey

  3. 配置完毕后的效果如下:

    [root@test .ssh]# ssh huigher
    This is huigher speaking
    Now is Sat Oct 29 16:13:36 CST 2016
    Connection to 121.40.xxx.xxx closed.

  4. 除了command以外的命令,是无法执行的,况且连交互式shell都没有,更别提执行命令了,所以安全性是比较高的。

最后

本文撰写仓促,难免有错误和不足之处,若各位看官发现,请评论指出,不胜感激!

参考资料

  1. https://www.novell.com/support/kb/doc.php?id=7007565
  2. http://askubuntu.com/questions/449364/what-does-without-password-mean-in-sshd-config-file

sshd_config 中 PermitRootLogin 的探讨相关推荐

  1. 【sshd】sshd_config 中 PermitRootLogin 的forced-commands-only的限定密钥登陆、限定执行命令

    主讲 :PermitRootLogin的可选项 众所周知,sshd_config是sshd的配置文件,其中PermitRootLogin可以限定root用户通过ssh的登录方式,如禁止登陆.禁止密码登 ...

  2. 一步追加 `/etc/ssh/sshd_config` 中的`PasswordAuthentication yes` , `PermitRootLogin yes` , 允许ssh远程密码登录

    Linux一步追加 /etc/ssh/sshd_config 中的PasswordAuthentication yes , PermitRootLogin yes , 允许ssh远程密码登录的脚本 一 ...

  3. 寻找下一款Prisma APP:深度学习在图像处理中的应用探讨

    在9月23日到9月24日的MDCC 2016年中国移动者开发大会"人工智能与机器人"专场中,阿里云技术专家周昌进行了题为<寻找下一款Prisma APP:深度学习在图像处理中 ...

  4. 做虚拟化服务器的配资一致嘛,服务器虚拟化技术在校园网管理中的应用探讨.pdf...

    第 卷 第 期 江 苏 建 筑 职 业 技 术 学 院 学 报 14 3 Vol.14 曧.3 年 月 JOURNAL OF JIANGSU JIANZHU INSTITUTE 2014 09 Se ...

  5. 计算机基础为什么要学word,计算机基础中word教学探讨

    原标题:计算机基础中word教学探讨 采用任务教学可以很好地培养学生的实践动手能力和分析问题.解决问题的能力,而在任务教学中的成败则取决于良好的任务设计.本人在学校从事<计算机基础>教学多 ...

  6. 转发保留不错一篇 数学模型神经网络在程序化交易模型构建中的运用探讨

    数学模型神经网络在程序化交易模型构建中的运用探讨 作者:唐中 目前,程序化交易已经成为国外投行和金融机构交易的主流手法,因为程序化交易是追求稳定持续的盈利模式,能够实现交易的稳定化,从而杜绝人工交易中 ...

  7. 计算机的新兴技术在测绘工程领域的应用,测绘新技术在测绘工程测量中应用的探讨张晨(原稿)...

    <测绘新技术在测绘工程测量中应用的探讨张晨(原稿).doc>由会员分享,可免费在线阅读全文,更多与<测绘新技术在测绘工程测量中应用的探讨张晨(原稿)>相关文档资源请在帮帮文库( ...

  8. 智能工艺并不等同于计算机辅助工艺,关于人工智能技术在计算机辅助工艺设计中应用的探讨...

    1 / 6 关于人工智能技术在计算机辅助工艺设计中应用的探讨 关于人工智能技术在计算机辅助工艺设计中应用的探讨 1 人工智能概述 人工智能是是一门主要研究计算机对人的一些智能行为与思维过程进行模拟的学 ...

  9. 计算机辅助设计技术有哪些优点,计算机辅助设计技术在机械设计中的应用探讨...

    [摘要]在计算机化的21世纪,计算机辅助设计技术也在不断发展.机械设计在信息时代迎来了新的发展机遇,计算机技术应用于机械设计当中,为机械设计提供了新的方法,由此使得机械设计的形式也从根本上发生了巨大的 ...

最新文章

  1. 查看sqlserver被锁的表以及如何解锁
  2. 干货满满:详解四组遍历数组
  3. USB开发基础:USB命令(请求)和USB描述符
  4. 六、配置Oracle数据库的网络环境
  5. linux 控制网卡流量,如何管理和控制多网卡 Linux 虚拟机的流量走向
  6. 【渝粤教育】国家开放大学2018年秋季 0314-21T兽医基础 参考试题
  7. 【HTML5】页面点击按钮添加一行 删除一行 全选 反选 全不选
  8. VB.NET在线升级程序源代码,可以独立使用
  9. 在python中如何将两个list合并成一个list,不用for语句
  10. 程序员春节回家装逼指南
  11. fluent瞬态_瞬态环境
  12. 马哥python_马哥Python 开发9期
  13. wps 甘特图_项目管理/产品研发/建设施工/计划生成项目进度甘特图表教程
  14. 计算机毕业设计Java多媒体网络教学(源码+系统+mysql数据库+lW文档)
  15. 小白快速入门Laravel 5.8框架
  16. 何登骥获“两优一先”荣誉 谋定·国稻种芯: 湖南农业科学院表彰
  17. 一、大话HTTP协议-HTTP的前世今生
  18. python输出n的32次方_在Python中,如何将2的32次方-1的值存放到g中?
  19. Specular mode: Specular parameter 高光模式:高光参数 Standard Shader系列7
  20. 计算机工作原理与系统组成?,计算机工作原理及系统组成

热门文章

  1. 祭我的小三之HTC G3
  2. 线程锁EnterCriticalSection和LeaveCriticalSection的用法
  3. Linux下IPv6配置
  4. 法国追梦DREAM-音频芯片-应用于电子琴电吹管电吉他
  5. Bitmap加载内存分析
  6. 带token的登陆页面爆破方法(burp宏+爬虫脚本分享)
  7. 喜讯丨爱浦路IPLOOK成功入选2021年广东省“专精特新”企业
  8. 移动广告商力美广告获B轮2000万美元投资
  9. html+css+js 下拉菜单
  10. PHP 实现水印图片生成