注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

有情况

学会慢生活,拥有平常心……

 
 
 

日志

 
 

SSH无密码登录服务器  

2011-12-02 22:42:22|  分类: 网站相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

此文中讲述的方法,是在服务端生成SSH公钥和密钥。这样可以保证非root用户也可以做到无密码登录。
之前从网上看到一些方法,都是讲的root帐号的无密码登录。当应用到其它非root用户时,都不可行。原因应该是本地的用户的ID与远程用户的ID是不同的,即使是同名。当在服务端生成公钥和密钥,再把密钥拷贝到客户端,才是正解。

默认情况下,我们通过客户端ssh到服务器端,是需要输入密码来进行认证的.除了使用用户名和密码,SSH还可以使用公钥/私钥来进行认证,这样就避免在同一客户端SSH多次输入麻烦.

SSH 使用公钥/密钥认证的原理如下:

服务器端持有公钥,客户端持有密钥,当客户端通过SSH到服务器端时将会发送私钥,服务器端根据私钥和自身持有的密钥进行验证.如果匹配,认证通过.具体设置如下:

1.登录到服务器端,生成SSH公钥和密钥
[demo@xfulcrum ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa): #回车
Created directory '/home/demo/.ssh'.
Enter passphrase (empty for no passphrase): #回车
Enter same passphrase again: #回车
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
cf:40:f3:6f:08:c4:f3:54:7f:92:6e:6a:44:0e:64:94 demo@xfulcrum

2.在服务器端将生成的公钥加入authorized_keys中
[demo@xfulcrum ~]# cd ~/.ssh
[demo@xfulcrum
~]# touch authorized_keys
[demo@xfulcrum
~]# cat id_rsa.pub >> authorized_keys
[demo@xfulcrum
~]# chmod 600 authorized_keys #非常重要,否则不会成功

3.将私钥拷贝到客户端

[demo@hao250 ~]$ mkdir .ssh
[demo@hao250 ~]$ scp shujie@199.119.200.228:/home/demo/.ssh/id_rsa /home/demo/.ssh/
shujie@199.119.200.228's password:
id_rsa                                        100% 1675     0.8KB/s   00:02
[demo@hao250 ~]$ chmod 600 .ssh/id_rsa
[demo@hao250 ~]$ ssh demo@xxx.xxx.xxx.xxx,(xxx.xxx.xxx.xxx为xfulcrum的IP)可以不用输入密码就能登录。

 

####################################

从表面上简单的理解一下登录的过程,
首先 ssh-keygen -t rsa 命令生成了一个密钥和一个公钥, 而且密钥能够配置自己的密码
能够把密钥理解成一把钥匙, 公钥理解成这把钥匙对应的锁头,
把锁头(公钥)放到想要控制的server上, 锁住server, 只有拥有钥匙(密钥)的人, 才能打开锁头, 进入server并控制
而对于拥有这把钥匙的人, 必需得知道钥匙本身的密码,才能使用这把钥匙 (除非这把钥匙没配置密码), 这样就能够防止钥匙被了配了(私钥被人复制)

当然, 这种例子只是方便理解罢了,
拥有root密码的人当然是不会被锁住的, 而且不一定只有一把锁(公钥), 但假如任何一把锁, 被人用其对应的钥匙(私钥)打开了, server就能够被那个人控制了
所以说, 只要您曾知道server的root密码, 并将有root身份的公钥放到上面, 就能够用这个公钥对应的私钥"打开" server, 再以root的身分登录, 即使现在root密码已更改!

假如想控制n个机器, 那就需要n对钥匙(密钥和公钥), ssh-keygen 命令能够随意更改钥匙对的名字, 比如:
[root@wwy .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_192.168.102.12
......

这样私钥和公钥的名字分别就是:
id_rsa_192.168.102.12 和 id_rsa_192.168.102.12.pub
然后将 id_rsa_192.168.102.12.pub 文档的内容, 追加到sever的 ~/.ssh/authorized_keys2 文档中,

  评论这张
 
阅读(628)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016