没学过密码学,但还是得补点相关知识。公钥认证,实际上就是使用一对加密字符串。一个叫做公钥,另一个叫密钥。公钥是公开的,都能看到,因此只能用于加密内容。密钥则只属于拥有者,用于解密经过公钥加密后的内容。
公钥认证有什么用呢?1)密码容易被暴解或者猜测;2)多个用户共用一个帐户,人多容易泄漏密码,并且修改密码需要通知所有人;3)还有一种常见的情况,输入密码有个交互过程,这对跑脚本会造成不方便。
下面主要分析第三种情况。可以利用expect,来解决脚本的交互,但在某些场合会有限制。例如:服务器上没有装expect库,而且没有安装库的权限,这种情况下就比较麻烦了。这时,可以考虑SSH的公钥认证方法。
首先,使用ssh-keygen产生一对密钥和公钥,例如:
ssh-keygen -t dsa
一路回车,会在主目录.ssh下产生id_dsa(密钥),id_dsa.pub(公钥)。将公钥拷贝到你要通信的服务器的~/.ssh/目录下,然后将内容拷贝到authorized_keys。
cat id_dsa.put >> authorized_keys
密钥也放在~/.ssh目录下,如果是用xshell工具的话,则在认证中导入该密钥即可。
阅读(770) | 评论(0) | 转发(0) |