SSH应该使用密钥还是密码?
关于SSH,几乎每个人都同意密钥要优于密码,更安全,并且更先进,但我并不同意这个观点。
虽然密钥的确可以更好,但它有着还没被意识到的严重风险,并且我认为比得到妥善管理的密码更不安全。
通常密钥更好的理由是多数人使用了弱密码,并且系统之间共享密码,所以一旦发生密码泄漏就会同时危害到多个系统。既然密钥可以设置口令,那么同时拥有两者(密钥和口令)的它当然就更安全了。
这的确没错,但是在大多数得到妥善管理的环境中事实上并非如此,他们没明白真正的风险到底源自哪里,来自哪一步。
举个例子,如果我们在每个地方都使用硬性的随机密码,并且不在两个系统、服务,等等之间共享任何密码,在系统搭建的时候就使用工具和流程来这么做,那么由于密码很少变更,系统将会长期安全。一个关键问题是大部分的安全设置应该在第一次安装系统时由某种机制自动完成。
密钥是完全不同的。的确,一个好的系统应该生成好的密钥,并且不共享它,哪怕管理这么多的密钥文件要比管理同样多的密码困难得多地多。密钥很难去移动(特别是要走ssh网关的时候)、存储、命名、组织和共享,等等。这些都是缺点,并且会产生风险。
密钥要做到安全,就需要口令,但是很少密钥有口令,即便有,工程师也常常为了使工作轻松而移除它们,而且每一次使用都可能有机会被移除口令或者被拷贝到其他地方,一旦发生这种事情,安全性就会永久性地降低了。
更严重的是,密钥文件提供访问所需的一切,如果用户没有常识那么就可能被盗,通常是坐不受保护的位置,并以明文的形式从他们的机器上被盗。理论上来说,用户可以为密钥设置口令,但是他们很少这么做,这也是风险的所在 —— 如果我黑进了你的电脑或者ssh网关,那么我就可以在你不知道的情况下登录到你的所有系统,而密码不可能。这正是我反对使用密钥的核心问题 —— 你所有服务器的安全性,其实和你最弱的客户和工程师的机器安全性是一样的,那可能只是台个人笔记本,智能手机,或者家用电脑,并且感染了各种各样的木马和病毒,哪一种都可以读取你的密钥!
好的密码则相反,被保存在类似Keepass的工具里,基本上不可能被盗,特别是大批量的。
解决密钥安全问题的唯一办法是设置口令,但是不太可能,忙到要死的工程师会经常去除口令的。理论上来说ssh协议可以被增强到报告密钥种类和是否使 用了口令,但是因为这是在客户端做的检查,所以服务器无法信任它。不存在一个简单的办法来强制设置口令,因此多数的密钥是不受保护的,并且不安全。
更进一步,对于大型系统,当我们拥有5,000台服务器的时候,哪种方式更加易于管理,是密钥还是密码?当然,LDAP是一种解决方案,但只能用于一些特性系统,而且我们也不可能强制所有客户都使用LDAP,所以我们还是得面对管理密钥还是密码的问题,显然,管理密码要容易得多。我们知道各种类型和用途的密码系统,但很少听说有哪个密钥系统 —— Keepass可以处理密钥文件,进行剪切粘帖,但没有任何实际有用的大规模处理方式。
最后,归结为一个问题,哪一种方式更容易得到正确地管理,是带口令的密钥,还是复杂的随机密码。对我来说,密码赢了。如果您使用了密钥,那么现在请为它加上口令。
SSH应该使用密钥还是密码?的更多相关文章
- SSH使用密钥免密码登录
使用ssh远程连接服务器,有两种身份校验方式:账号密码和秘钥.使用秘钥的方式理论上更加安全,而且免去了输入密码的步骤,使用起来更方便(尤其对于sftp,scp等). 设置 SSH,打开密钥登录功能 编 ...
- ssh服务、密钥登陆配置
环境内核信息: [root@zabbix-01 ~]# uname -a Linux lodboyedu-01 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:2 ...
- linux如何配置双机SSH信任然后双向免密码登陆
linux如何配置双机SSH信任然后双向免密码登陆 www.111cn.net 更新:2015-01-14 编辑:edit02_lz 来源:转载 有时为了方便管理多台Linux主机,想实现双机之间信任 ...
- centos使用密钥替换密码登录服务器
一.首先登陆centos,切换用户,切换到你要免密码登陆的用户,进入到家目录,以下我以admin为例,命令:su admincd ~ 二.创建钥匙,命令:ssh-keygen -t rsa,一路按Y搞 ...
- ssh&scp指定密钥
scp时指定密钥: scp -P22 -r -i ~/.ssh/dongjing-shanghai.pem root@kiri_pro01:/data/backup/back_from_japan ...
- 设置SSH自动登陆(免密码,用户名)
设置SSH自动登陆(免密码,用户名) 1.创建公钥.公钥 ssh-keygen -t rsa 无视它出来的任何提示,欢快的一路回车到底吧. 2.把公钥 id_rsa.pub 复制到远程机器的 ...
- db2 mysql oracle 邮件 tomcat ssh telnet ftp samba 账号密码
db2 mysql oracle 邮件 tomcat ssh telnet ftp samba 账号密码 检测
- redhat6.2下的ssh密钥免密码登录(原创)
这个是我自己写的,鼓励转载,请说明转载地址:http://www.cnblogs.com/nucdy/p/5664840.html 在进行hadoop的免密码的登录操作是,老是发生no route等错 ...
- SSH服务搭建、账号密码登录远程Linux虚拟机、基于密钥的安全验证(Windows_Xshell,Linux)
问题1:如果是两台虚拟机ping不同且其中一个虚拟机是克隆的另一个,需要更改一下MAC地址,关机状态下 一> "编辑虚拟机设置" 一>" 网络适配器" ...
随机推荐
- DB2 connection
1.DB2 connection-----DB2连接方式 2.开放应用层----type way 4 ==共享 3.本地本地之间访问----type way 2 JDBC SD---sysplex d ...
- [ZZ+CH] Html5 canvas+js 时钟
总之新Blog入驻以后,又开始老习惯,到处折腾自定义的空间,放些东西. 想起以前大一的时候做过一个Javascript的时间显示器,现在想做一个时钟,当然现在老奸巨猾,会先去看一看有前辈写过没. 前辈 ...
- javascript-对象的函数(一)
Date.prototype.Format = function(fmt) { //author: meizz var o = { "M+" : this.getMonth()+1 ...
- 【NetOffice Excel】Excel合并单元格【原】
CSharp操作Excel采用开源的原生.NET程序集NetOffice,格式兼容性更好. 在操作Excel的时候有时候需要合并单元格 using ExcelOffice = NetOffice.Ex ...
- “Cache-control”常见的取值有private、no-cache、max-age、must-revalidate等
网页的缓存由HTTP消息头中的"Cache-Control" 来控制的,常见的取值有private.no-cache.max-age.must-revalidate等,默认为pri ...
- mysql实例---sql语句中使用@变量
本文介绍下,在mysql语句中使用@变量的一个例子,学习下这个特殊变量的用法,有需要的朋友参考下吧. 要求: 计算用户距上次访问的天数,根据imei号区分不同的用户,如果时间段内只有一次访问则为0. ...
- AWS--EC2基本概念
原文:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html EC2:Elastic Compute Cloud 特性包括: ...
- dom树的介绍,及原理分析
三.解析和DOM树的构建 1.解析: 由于解析渲染引擎是一个非常重要的过程,我们将会一步步的深入,现在让我们来介绍解析. 解析一个文档,意味着把它转换为一个有意义的结构——代码可以了解和使用的东西,解 ...
- MySQL创建数据库[保存mojo格式的数据库]已经常用的utf8格式数据库
一.创建最新编码utf8mb4格式的库: CREATE DATABASE IF NOT EXISTS yourdbname CHARACTER SET utf8mb4 COLLATE utf8mb4_ ...
- chm文件打开,有目录没有内容
下载下来的一些chm文件,打开的是否提示“打开此文件前总是询问”,不理睬直接打开后,只有目录,页面内容都显示“已取消到本页的导航”.原因是该CHM文件的发行商未知,将“打开此文件前总是询问”选项取消后 ...