ssh无密码登录

使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)
然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了
步骤如下:
本地
先要在本地生成一个dsa的公共key.然后copy到远程你要认证的服务器
创建key

$ ssh-keygen -t dsa

拷贝key到服务器端

$ scp  ~/.ssh/id_dsa.pub root@remotehost:/
Password: ********

登陆到服务器端安装公钥

$ ssh root@remotehost
Password: ********

远程服务器要做的事情

$ cat id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys       //权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能
$ rm  id_dsa.pub 

 

Public-key 认证机制比密码要安全, 因为密码不在网络上传输. 而且可以是用加密的方式存储的,为了安全,也可以设置一个passphrase,这样,别人拿到密钥也没有用.
如果以上步骤不能实现不输密码登陆的话,需要检查sshd服务的Pubkey认证功能是否默认打开
/etc/ssh/sshd_config:
PubkeyAuthentication yes           
如果修改后记的要重起你的ssh服务,用ssh –v来显示详细的登陆过程.
最后一步
建议不使用静态密码,我们都使用key了,修改如下内容可以关闭使用密码认证:
UsePAM yes

UserPAM no
关闭Pam的传统密码认证.

 

实现原理

使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是

•首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa) 
•然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥 
•当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了 

 

posted @ 2012-07-06 18:10  subsir  阅读(260)  评论(0编辑  收藏  举报