SSH 通过秘钥验证方式访问管理服务器 原理和配置方法

工作需要,很多人需要访问服务器,通过密码管理太头疼(总是有人没权限最后变成了我的事),所以想搞个证书方式管理,省心又省力,于是网上找了很多资料,发现都不够详细,于是有了如下内容,进入正题。


0,什么是非对称加密(如果只想配置ssh通过证书登陆可以跳到3 直接配置ssh证书认证方式登录)

        先解释下一些原理问题,帮助记忆和真正理解ssh公钥登陆。

        对称加密:账户口令登陆方式,因为加密和解密是同一个密码,需要在网络中传输密码,安全隐患是不是加密的算法如何复杂,而是如何安全的将密码从加密方传输给解密 方。也称为单密钥加密

非对称加密:双密钥加密,双方都生成一对密钥(公钥加私钥)。非对称加密其实有两个概念,加密和认证。

      A和B传输   A和B两个人分别生成一对密钥(公钥和私钥)

     首先,公钥和私钥都可以用来加密,但是公钥加密只能用私钥解密,私钥加密只能用公钥解密。必须是同一个人的一对密钥。那么什么是加密,什么是认证。

     加密,私钥是只有自己保存不会告知第二人,公钥是发布给别人可能发给多个人有多份。AB交换自己的公钥,A发送文件给B,用B的公钥加密文件,只有B用                                         自己的私钥才可以解密,得到信息。如果第三方截获了加密的内容,但是由于没有B的私钥,无法破解加密后的内容,无法得到原本的信息。这样就完                                           成了传输内容的加密

                             认证,什么是认证呢,任何有B公钥的人都可以给B发送经过B公钥加密的文件,B都可以用自己的私钥解密,但是B怎么确定这个文件 是A发送而来不是C或者其他获取他公钥的人伪造的呢,这时候就需要用到认证了,A用自己的私钥加密一个签名,在文件末尾随加密后的文件一同发送给B,因为签名是A自己的私钥加密,只有A自己的公钥才可以解密,同时私钥具有保密性只有A自己拥有,B用A的公钥去解密这个加密了的签名,如果解密成功,那么证明这个签名是A发送给B的。这就是认证的过程。


   现在我们总结下。公钥和私钥     都可以用来加密 并且公钥加密只能私钥解密,私钥加密只能公钥解密,公钥加密用来文件的传输,私钥加密用来信息的认证。公钥   加密 传输信息     私钥    解密   获取信息

私钥   加密 签章            公钥    解密   验章


1,SSH的认证方式:第一种:口令(账户密安全验证,对称加密)

过程:a,服务器接到用户请求,发送服务器公钥给用户。

       b,用户用服务器公钥加密登陆密码,发送给服务器。(传输密码过程)

                   c,服务器用私钥解密,验证登陆密码,正确就同意登陆。


缺点:密码不好管理,复杂的记不住,简单容易破解,别的服务器可以冒充需要访问的主机,给你他的公钥,你发送加密后的密码给冒牌服务器,冒牌服务器通过私钥解密你加密的密码就得到了你的密码。服务器也不会验证用户,只要解密后密码正确任何用户都可以登陆。存在安全隐患。


2,SSH的认证方式:第二种:通过证书登陆(非对称加密,需要生成客户端密钥对,不需要传送验证密码密码)

认证过程分为两个步骤

前提,将客户端公钥发送到服务器上保存。

       一,会话密钥(session key)生成

1,客户端请求链接服务器,服务器将服务器公钥发送个客户端。

2,服务器生成会话id(session id),设为p,发送给客户端。

3,客户端生成会话密钥(session key),设为q,并计算r=p x or q。

4,客户端用服务器公钥加密r,发送给服务器。

5,服务器用服务器私钥解密获得r。

6,服务器进行r xor p的运算,获得q。

到此服务器和获得了客户端生成的会话密钥q。以后传输都被q加密。

二,认证

1,服务器生成随机数x,用客户端公钥加密发送给客户端。

2,客户端用客户端私钥解密得到随机数x。

3,客户端计算q + x的md5值n(q+x),q为客户端生成的会话密钥。

4,服务器计算q + xde md值 m(q+x)。

5,客户端将n(q+x)发送给服务器。

6,服务器比较m(q+x)和n(q+x),两者相同认证成功。

3,进入正菜,ssh证书登陆配置。

Linux配置 (centOs为例)

   a,生成客户端密钥对:ssh-keygen -t dsa   第一行按enter 确认保存私钥到默认路径/root/.ssh/   第二行提示创建私钥密码默认位空 第三行确认密码

       一路回车如下图创建成功

b,查看自己的公钥私钥 ls  /root/.ssh/   id_dsa为私钥   id_dsa.pub为公钥

c,拷贝客户端公钥到服务器认证文件中  ssh-copy-id -i /root/.ssh/id_dsa.pub 服务器IP,输入yes和密码成功。

直接ssh不需要输入密码直接登陆服务器。


Windows  xshell 配置

我比较喜欢Xshell的界面所以以xshell举例,其他secureCRT 操作原理都一样。

a,xshell生成密钥对 工具-新建用户密钥生成向导,狂点下一步生成密钥对,最后时候保存公钥到一个路径,比如桌面。

b,rz上传公钥到对应用户家目录下的.ssh目录   如 /root/.ssh/ 。cat id_dsa_1024.pub >> /root/.ssh/authorized_keys

直接ssh不需要输入密码直接登陆服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值