SSH 密钥

SSH 密钥

SSH的原理

信息传输需要安全,因此就需要对信息进行一个加密通信。已经有的加密通信方式分为两种:

  1. 对称加密

  2. 非对称加密

  • 对称加密

    对称加密非常简单,加密和解密是使用同一套密钥;
    为了方便理解加密,我们来举一个例子,为了传输字母“A”,我们使用一个方法(这个方法其实就是用密钥和原始数据进行计算得到)把“A”变为“a”。这个过程其实就是对明文“A”的一个加密的过程。

    对称加密使用同一个密钥(同一个方法)进行加密和解密。

  • 非对称加密

    ssh一种非对称加密的方法,有公钥和私钥两种密钥。

SSH 使用

SSH可以看做是一个C/S架构的应用软件,在Server端口默认为22

使用ssh登录 用户名为:username 机器节点为:host的服务器

ssh username@host

默认远程server端口不是22,为2222

ssh -p 2222 user@host

SSH 通信原理

ssh与server进行通信的时候,为了保证安全性,那么就不能直接使用明文进行沟通:比如client需要登录server,在验证密码的过程中不能使用明文。那么client需要对密码进行一个加密,server端接收到密文以后再对密文进行解密,对比密码的正确性。

加密方法:公钥加密,私钥解密。

通信过程:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

 The authenticity of host 'host (12.18.429.21)' can't be established.

 RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.

 Are you sure you want to continue connecting (yes/no)?

server的公钥会被保存在client节点的:ssh/knows_hosts中。表示了这些公钥对应的server都是client可信的(也有可能被中间人劫持,client认为hacker是可信的)

但是这种方法会被中间人攻击:所以client端在ssh server的时候就无法判断拿到的公钥是否是server端的还是某一个hacker节点的。

SSH 登录方式

SSH 密码登录

直接使用 ssh使用中的方式来登录,输入密码

SSH 免密钥

ssh免密钥登录又称为 “公钥登录”

“公钥登录”的原理:client将自己的公钥,放在server上。那么client在登录的时候,server会发送一个信息,client使用自己的私钥进行加密,让后发送给server,server使用对应的公钥解密进行对比,如果相同就表示server信任client,同意client进行无密钥登录。

生成公钥(ssh/id_rsa.pub)和私钥(ssh/id_rsa)

ssh-keygen

公钥发送到远程server上

ssh-copy-id user@host

server端会将client的公钥保存在 (ssh/authorized_keys)中,这样client端在进行ssh 登录server的时候就不需要进行密码登录的。这种方式称为“公钥”免密登录。

文件类型

  • id_rsa:私钥

  • id_rsa.pub:公钥

  • authorized_keys:授权客户端的公钥

  • known_hosts:保存的远程主机的host key,每一个远程主机都有一个安全的唯一的host key;这个内容实在client第一个ssh登录远程主机的的时候,client会进行提示。

你可能感兴趣的:(SSH 密钥)