SSH公钥登录和RSA非对称加密

SSH登录方式

接触过Linux服务器的同砚一定用过SSH协议登录系统,通常SSH协议都有两种登录方式:密码口令登录和公钥上岸。

一、密码口令(类似于账号密码登录)

      1.客户端毗邻服务器,服务器把公钥发给客户端
      2.客户端输入登录口令,并用服务器公钥加密后提交给服务器
      3.服务器用私钥解密,效果匹配,则允许登录

二、公钥登录(一样平常用RSA非对称加密)

     1.客户端天生密钥对
     2.将客户端的公钥写入服务器的密钥验证文件
     3.客户端请求登录,服务器天生一段随机字符串,并使用客户端公钥加密后发送给客户端
     5.客户端使用自己的私钥解密,并返回解密后的信息到服务器
     6.服务器举行信息对比,若是效果匹配,则允许登录

SSH公钥上岸

天生秘钥

天生秘钥,Windows/Linux通用:

# -t:指定秘钥类型,不指定默以为RSA
# -C:注释,可以不用设置,主要用于识别秘钥,可以写邮箱、用户名等信息
# -b:秘钥长度,默认2048位,一样平常不用设置
ssh-keygen -t rsa -C "www.guitu18.com"

以Windows演示(Linux是一样的),这里会有三次确认输入,第一个是设置秘钥保留的路径,第二个和第三个是设置秘钥的密码。默认秘钥保留路径不用修改,若是不设置密码直接按三次Enter即可。

SSH公钥登录和RSA非对称加密

之后你就能在当前用户目录下的.ssh目录看到天生的公钥和私钥了

SSH公钥登录和RSA非对称加密

同步发表于:https://www.guitu18.com/post/2020/05/01/71.html

服务器开启公钥上岸

接着就是将我们的公钥写入服务器的密钥验证文件了,在写入前我们还要在服务器开启密钥上岸。

修改sshd设置文件:vim /etc/ssh/sshd_config

SSH公钥登录和RSA非对称加密

这里你需要关注的参数有三个,逐一说明:

# 公钥登录开关,默认是关闭的,将他打开,修改为 yes
PubkeyAuthentication yes
# 秘钥验证文件,默认值为 .ssh/authorized_keys 通常不用修改
AuthorizedKeysFile      .ssh/authorized_keys
# 密码登录开关,默认开启(在公钥登录调试完成前你可以先开启密码登录)
PasswordAuthentication no

若是你有看过其他设置教程,你可能还会看到要你开启一个RSAAuthentication的参数:

# 这个参数在CentOS 7.4之后弃用了
RSAAuthentication yes

若是你的系统是CentOS 7.4及以后,你在 /etc/ssh/sshd_config 文件中会找不到这个参数,不用剖析也不用将它加进来,SSH第二代协议已经将它废弃了。

修改完成后重启sshd服务即可:

# 也可以用这个下令:service sshd restart
systemctl restart sshd

将公钥写入服务器

现在你需要把你内陆天生的公钥信息写入秘钥验证文件,也就是 .ssh/authorized_keys文件,你可以将你的公钥上传到服务的~/.ssh/目录后改名为 authorized_keys,也可以用文本编辑器将公钥打开,复制文本内容到服务器的authorized_keys文件里(设置多态客户端公钥时,换行后直接往后面追加公钥内容即可)。

vim ~/.ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp29fDtYdrHaj6l+QAs4RXvkFaoct1mYlKrQze4MQDN1d308SbVLPgY6F3D80MMpdfu9fpKZzNbpgzCWkncfzX8ClJts2AaT1smsr23ubFnq6/OOPXQJi2zIagOorSn+KjME8gHOfraGn1vNKJemdmpqDe+jmWTzlAaGecUHoh+fWwBl5lA/Cz62OJ1k/O3TwLF7sn3QPLggv3CdZ8y3Vh1k6XN9GCtUlL/TujK3iYGHE3410AOLdNb56+t6k/NJJZwpH/x77Zf6sWsZo8Ri/tFGhsCKIniu56o+m6R3/Ar40LOz6gmfJbwfQsqwNGh67/LtO00QDm6qfpEdNkz2v1 www.guitu18.com

使用公钥上岸

现在你使用你的公钥来登录服务器了,这里以Xshll举例,点击链接服务器之后,会弹出认证窗口(我关闭了密码登录以是密码选项是灰色的)。点击 [浏览] > [用户秘钥] ,在弹出的界面点击 [导入],选择你之前天生的秘钥对中的私钥(是私钥不要选错了),若是在天生秘钥的时刻设置了密码在导入时也需要输入密码。

SSH公钥登录和RSA非对称加密

SSH公钥登录和RSA非对称加密

导入乐成后返回认证窗口选择刚导入的秘钥登录,若是天生秘钥的时刻设置了密码,在用秘钥登录时也需要输入密码,口令准确即可登录乐成了。

仔细的同伙应该看到在证书导入的界面有一个天生按钮,是的,Xhell也可以帮我们天生证书,而且是图形化界面操作(Linux非图形模式只能用下令行天生),异常友好,实在大部分SSH毗邻工具都带了天生秘钥的功效,感兴趣的可以自己实验一下。

RSA加密

说RSA加密要先说两个观点:对称加密和非对称加密

对称加密

​ 对称加密是最快速、最简朴的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有许多种算法,由于它效率很高,以是被普遍使用在许多加密协议的焦点当中。对称加密通常使用的是相对较小的密钥,一样平常小于256 bit。由于密钥越大,加密越强,但加密与解密的历程越慢。若是你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但若是你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的历程要花费很长的时间。密钥的巨细既要照顾到平安性,也要照顾到效率。对称加密的一大瑕玷是密钥的治理与分配,换句话说,若何把密钥发送到需要解密你的新闻的人的手里是一个问题。在发送密钥的历程中,密钥有很大的风险会被黑客们阻挡。现实中通常的做法是将对称加密的密钥举行非对称加密,然后传送给需要它的人。

非对称加密

​ 非对称加密为数据的加密与解密提供了一个异常平安的方式,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方平安保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个举行加密,而解密则需要另一个密钥。好比,你向银行请求公钥,银行将公钥发给你,你使用公钥对新闻加密,那么只有私钥的持有人–银行才能对你的新闻解密。与对称加密差别的是,银行不需要将私钥通过网络发送出去,因此平安性大大提高。现在最常用的非对称加密算法是RSA算法。虽然非对称加密很平安,然则和对称加密比起来,它异常的慢,以是我们照样要用对称加密来传送新闻,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。

引用:https://www.cnblogs.com/scofi/p/6617394.html

非对称加密在许多地方都有应用,如HTTPS。HTTPS的非对称加密还涉及到一个CA证书发表机构,先通过CA根证书以非对称加密的方式举行认证,然后再从服务器拿到公钥,之后再用公钥加密传输对称加密要用到的秘钥,这样就保证了对称加密证书的平安性,接着就可以愉快的用对称加密来举行通讯了。

非对称加密在这里有两个作用:认证和平安传输对称加密秘钥。为啥不用非对称加密直接通讯呢?前面说过,非对称加密确实平安,然则它慢啊,而且异常慢。在保证了对称加密证书的可靠性之后,对称加密的通讯也是平安的,那么后面就可以直接用更高效的对称加密通讯了。

参考:https://www.cnblogs.com/scofi/p/6617394.html

参考:https://www.cnblogs.com/Leroscox/p/9627809.html

原创文章,作者:28x29新闻网,如若转载,请注明出处:https://www.28x29.com/archives/7134.html