现在的位置: 首页 > 服务器 > 正文
Linux实现SSH无密码登录
2014年01月17日 服务器 ⁄ 共 1242字 暂无评论 ⁄ 被围观 1,132 views+

    其实之前在日常的服务器管理中,一直经常使用这个,因为两台服务器之间经常的scp数据,这台跳到那台的,但是长时间不用的话,又会忘记,特此记录下来,以备以后查看。

     下面举例说明,在例子中去说明这么做的目的、原理及实现方式。
      目的:让服务器A不需要密码直接可以登录服务器B,发送数据给B,这样在实际环境中的应用场景可能会有以下几种情况:
       1) A是外网,可以直接远程访问;B是内网,不给外部直接访问,A与B之间可以相互访问,这时就需要通过A去访问,相当于跳板,配置一下无密码登录比较方便登录(当然也会有安全隐患)
       2) A是工作中的服务器,比如数据库服务器,需要执行计划任务定期的将数据自动传输到B上,以达到备份的目的。
       3) 达到A控制B的目的,通过这样的方式就算是B修改了当前的登录密码,也没关系。原因很简单,因为用户的验证方式不同。
       原理:其实从需要实现的目的来说,其实很容易明白,这里的实现方式就是公私钥的验证方式,那么什么是公私钥?简单的说:服务器端保存这一份公钥文件,客户端需要有私钥文件,每次访问,客户端需要带着私钥文件去和服务器端保存的公钥对比,然后去认证用户是否合法,这个就相当于支付宝的数字证书一样,每个人都是不一样的私钥文件,支付宝服务器只需要保存一份公钥文件即可,举个不恰当的例子就是不同的钥匙去开同一把锁。
      
       实现方式:既然是公私钥验证,那么首先就得让A和B各持有这两个证书中的一个。而在这里的实验环境就是A需要持有私钥,B持有公钥。
       具体操作步骤如下:
             1)  生成密钥:登录服务器A,执行命令:ssh-keygen -t rsa(这里会有一些提示,一般一路回车即可,如果之前已经执行过这样的命令已经生成过了,会提示你是否重新生成,这里根据提示来即可)然后执行命令:cd /root/.ssh目录下,会看到目录下生成两个文件,分别是:私钥id_rsa和公钥id_rsa.pub。
             2)  将公钥给需要远程访问的服务器(这里就是服务器B):将id_rsa.pub远程传输给B,可以是scp直接传输,也可以是ftp上传,手段随意。将id_rsa.pub放到B的/root/.ssh目录下,执行ls查看命令,看当前目录下是否已经有authorized_keys文件了,如果有的话,说明这台服务器还能被其他服务器访问,如果不想破坏这个关系的话,那么就采用追加的方式,将当前的公钥追加到authorized_keys中,可以执行如下的命令:cat id_dsa.pub >> /root/.ssh/authorized_keys  ,如果没有authorized_keys这个文件的话,那么直接将id_rsa.pub修改成authorized_keys即可,可以执行如下命令:mv id_dsa.pub authorized_keys
            3) 测试:在A上直接ssh root@B服务器IP,没输入密码,直接登录成功了

给我留言

您必须 [ 登录 ] 才能发表留言!