关于SSH,几乎每个人都同意密钥要优于密码,更安全,并且更先进,但我并不同意这个观点。

虽然密钥的确可以更好,但它有着还没被意识到的严重风险,并且我认为比得到妥善管理的密码更不安全。

通常密钥更好的理由是多数人使用了弱密码,并且系统之间共享密码,所以一旦发生密码泄漏就会同时危害到多个系统。既然密钥可以设置口令,那么同时拥有两者(密钥和口令)的它当然就更安全了。

这的确没错,但是在大多数得到妥善管理的环境中事实上并非如此,他们没明白真正的风险到底源自哪里,来自哪一步。

举个例子,如果我们在每个地方都使用硬性的随机密码,并且不在两个系统、服务,等等之间共享任何密码,在系统搭建的时候就使用工具和流程来这么做,那么由于密码很少变更,系统将会长期安全。一个关键问题是大部分的安全设置应该在第一次安装系统时由某种机制自动完成。

密钥是完全不同的。的确,一个好的系统应该生成好的密钥,并且不共享它,哪怕管理这么多的密钥文件要比管理同样多的密码困难得多地多。密钥很难去移动(特别是要走ssh网关的时候)、存储、命名、组织和共享,等等。这些都是缺点,并且会产生风险。

密钥要做到安全,就需要口令,但是很少密钥有口令,即便有,工程师也常常为了使工作轻松而移除它们,而且每一次使用都可能有机会被移除口令或者被拷贝到其他地方,一旦发生这种事情,安全性就会永久性地降低了。

更严重的是,密钥文件提供访问所需的一切,如果用户没有常识那么就可能被盗,通常是坐不受保护的位置,并以明文的形式从他们的机器上被盗。理论上来说,用户可以为密钥设置口令,但是他们很少这么做,这也是风险的所在 —— 如果我黑进了你的电脑或者ssh网关,那么我就可以在你不知道的情况下登录到你的所有系统,而密码不可能。这正是我反对使用密钥的核心问题 —— 你所有服务器的安全性,其实和你最弱的客户和工程师的机器安全性是一样的,那可能只是台个人笔记本,智能手机,或者家用电脑,并且感染了各种各样的木马和病毒,哪一种都可以读取你的密钥!

好的密码则相反,被保存在类似Keepass的工具里,基本上不可能被盗,特别是大批量的。

解决密钥安全问题的唯一办法是设置口令,但是不太可能,忙到要死的工程师会经常去除口令的。理论上来说ssh协议可以被增强到报告密钥种类和是否使 用了口令,但是因为这是在客户端做的检查,所以服务器无法信任它。不存在一个简单的办法来强制设置口令,因此多数的密钥是不受保护的,并且不安全。

更进一步,对于大型系统,当我们拥有5,000台服务器的时候,哪种方式更加易于管理,是密钥还是密码?当然,LDAP是一种解决方案,但只能用于一些特性系统,而且我们也不可能强制所有客户都使用LDAP,所以我们还是得面对管理密钥还是密码的问题,显然,管理密码要容易得多。我们知道各种类型和用途的密码系统,但很少听说有哪个密钥系统 —— Keepass可以处理密钥文件,进行剪切粘帖,但没有任何实际有用的大规模处理方式。

最后,归结为一个问题,哪一种方式更容易得到正确地管理,是带口令的密钥,还是复杂的随机密码。对我来说,密码赢了。如果您使用了密钥,那么现在请为它加上口令。

除非注明,本站文章均为原创或编译,转载请务必注明出处并保留原文链接: 文章来自IT经理网

SSH应该使用密钥还是密码?的更多相关文章

  1. SSH使用密钥免密码登录

    使用ssh远程连接服务器,有两种身份校验方式:账号密码和秘钥.使用秘钥的方式理论上更加安全,而且免去了输入密码的步骤,使用起来更方便(尤其对于sftp,scp等). 设置 SSH,打开密钥登录功能 编 ...

  2. ssh服务、密钥登陆配置

    环境内核信息: [root@zabbix-01 ~]# uname -a Linux lodboyedu-01 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:2 ...

  3. linux如何配置双机SSH信任然后双向免密码登陆

    linux如何配置双机SSH信任然后双向免密码登陆 www.111cn.net 更新:2015-01-14 编辑:edit02_lz 来源:转载 有时为了方便管理多台Linux主机,想实现双机之间信任 ...

  4. centos使用密钥替换密码登录服务器

    一.首先登陆centos,切换用户,切换到你要免密码登陆的用户,进入到家目录,以下我以admin为例,命令:su admincd ~ 二.创建钥匙,命令:ssh-keygen -t rsa,一路按Y搞 ...

  5. ssh&scp指定密钥

    scp时指定密钥: scp -P22   -r -i ~/.ssh/dongjing-shanghai.pem root@kiri_pro01:/data/backup/back_from_japan ...

  6. 设置SSH自动登陆(免密码,用户名)

    设置SSH自动登陆(免密码,用户名)   1.创建公钥.公钥  ssh-keygen -t rsa  无视它出来的任何提示,欢快的一路回车到底吧.  2.把公钥 id_rsa.pub 复制到远程机器的 ...

  7. db2 mysql oracle 邮件 tomcat ssh telnet ftp samba 账号密码

    db2 mysql oracle 邮件 tomcat ssh telnet ftp samba 账号密码 检测

  8. redhat6.2下的ssh密钥免密码登录(原创)

    这个是我自己写的,鼓励转载,请说明转载地址:http://www.cnblogs.com/nucdy/p/5664840.html 在进行hadoop的免密码的登录操作是,老是发生no route等错 ...

  9. SSH服务搭建、账号密码登录远程Linux虚拟机、基于密钥的安全验证(Windows_Xshell,Linux)

    问题1:如果是两台虚拟机ping不同且其中一个虚拟机是克隆的另一个,需要更改一下MAC地址,关机状态下 一> "编辑虚拟机设置" 一>" 网络适配器" ...

随机推荐

  1. WinForms 实现气泡提示窗口

    [实例说明] 气泡提示因为他的美观又好被大多数用户所接收,用户所喜爱的就是程序员要实现的. 本实例实现了任务栏气泡提示,运行本实例,效果图如下所示: 单击提示.气泡提示就会显示,单击“关闭”气泡又会消 ...

  2. Nodejs加密php解密

    var crypto = require('crypto'); function decode(cryptkey, iv, secretdata) { var decipher = crypto.cr ...

  3. mysql中使用update select

    UPDATE t_user INNER JOIN t_shake ON t_shake.user_id = t_user.user_id SET t_user.shake_total_num = t_ ...

  4. Spark Streaming揭秘 Day32 WAL框架及实现

    Spark Streaming揭秘 Day32 WAL框架及实现 今天会聚焦于SparkStreaming中非常重要的数据安全机制WAL(预写日志). 设计要点 从本质点说,WAL框架是一个存储系统, ...

  5. 拓展,Fibonacci螺旋

    #该程序由023递归这课中的fibonacci数列递归写法修改而成 #在写的过程中发现,如果要正确引导用户的每一次输入,写的代码比主程序还要多 #当然,为了使程序在用户交互过程中显得更加友好,提供错误 ...

  6. 【转】How to view word document in WPF application

    How to view word document in WPF application (CSVSTOViewWordInWPF) Introduction The Sample demonstra ...

  7. jsp与servlet之间的参数传递【转】

    JSP与 servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP. 通过对象 request和 session (不考虑 application) ...

  8. 1011. World Cup Betting (20)(最大值)

    With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...

  9. SQL Server数据库备份(本机)

    基础的SQL Server数据库备份存储过程 /**************************************************************************** ...

  10. ORA-27102: out of memory并伴随OSD-00031的处理

    刚才客户电话过来说有个数据库起不来了,开发商搞了好久搞不掂,得要让我们去帮忙看看.过去到现场,发现数据库无法打开,连nomount模式都不可以.报错的内容大致如下: ORA-27102: out of ...