@
Radeon 1)使用登录密码,ssh基于密钥交换/推导算法建立会话秘钥,不会把登录密码在网络上传输。整个过程用服务器的公钥验证服务器,用户的账号密码验证登录用户,这是没有问题的。
-----------------------------
ssh口令登陆,采用的是服务器的公钥加密(密码包括其他传输内容)后传输到服务器端.有问题吗?密码验证这个环节是在服务器完成的而不是你的客户端本地. 我已经说的很明白了,属于单方验证状态, 即使假定你第一次获得的公钥是"真实"(因为ssh服务器公钥是服务器端自己制作的,和https不同),你只能识别出是否后续公钥是否有变动(和首次获取的比),服务器不能识别客户端身份.
2)用户开启的进程有读~/.ssh/*的权限,它要愿意2秒钟就读完并回传到它的服务器上了,你还很难检测出来。这是一个事实
------------------------------
已经告诉你了. 能读取~/.ssh/* 同样可以读取keepass 数据库. 这也是事实. ssh你自己的私钥,以及keepass都可采用本地密码加密.这没有本质区别. 获取后还是采取暴力破解.
3) 默认配置下sudo机制导致知道sudoer的密码就等于知道root密码。..用了sudo(特别是多个sudo账号),管理难度就陡然上升
------------------------------
不是ubuntu默认的那种获取root权限的方式,sudo可以精确定义A用户是否可用B用户执行某个程序/脚本.不仅仅是替代root那么简单的. 没人说"让你用默认配置",事实上大部分linux系统的默认配置是不启用用户权限.你可以建立一个帐户,用sudoer赋予一些管理系统命令的权限,专门用来做日常维护管理. 你也可以建立低权限的C帐户,并赋予一些程序的执行权限,ssh用于登陆服务器用. 你可以把你的ssh私钥扔那个账号下即可. 既然谈本地安全了,就别说"用默认配置",或者"保留root帐户反而会加强root密码".你这明显是想当然.
这个软方案就是用来解决你担心的"执行未知程序被读取~/.ssh/*"的问题.
4).我不推崇用Keep Pass等Keychain工具。
------------------------------
从你原文看你并没表达这个意思.从记录看,你是在讨论中才转变看法的.事实上正如我说的,既然担心本地密码加密的ssh私钥被读取,同样理由也要担心keep pass的数据库.
而且也给出一个解决方案了,用usb key这样的第三方硬件工具来管理. 或者手机等工具辅助的二次验证方式,丢了密码都不担心. 显然这些方案都比前面说的软件方案都麻烦.