• ssh服务详解


    • 理解ssh服务的两种认证方式

    • 掌握ssh服务的基本配置

    • 掌握ssh服务客户端工具的使用

    一、SSH介绍

    • SSH是Linux下远程管理的工具,相比Telnet安全,运维人员必备的神器!

    • SSH的全称Secure Shell,安全的shell,是Client/Server架构,默认端口号为22,TCP/IP协议

    • SSH有v1和v2版本

      • ssh v1:有漏洞,容易受到攻击

      • ssh v2:通过公钥加密(数字签名和密钥交换)的方式进行,确保服务器端的身份识别

    二、SSH加密算法

    • des 对称的公钥加密算法,安全低,数据传输速度快;使用同一个秘钥进行加密或解密

    • rsa 非对称的公钥加密算法,安全,数据传输速度慢 ,SSH默认的加密算法

    补充了解:

    DSA数字签名,非对称加密的另一种实现。

    DSA-Digital Signature Algorithm 是Schnorr和ElGamal签名算法的变种。简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名。如果数据和签名不匹配则认为验证失败!数字签名的作用就是校验数据在传输过程中不被修改。

    三、SSH服务的认证方式

    • 基于用户密码的认证

    1. [root@MissHou ~]# ssh 192.168.10.171
    2. The authenticity of host '192.168.10.171 (192.168.10.171)' can't be established.
    3. RSA key fingerprint is 9f:71:de:3c:86:25:dd:f0:06:78:ab:ba:96:5a:e4:95.
    4. Are you sure you want to continue connecting (yes/no)?

     

    提示信息:无法确认主机192.168.10.171的真实性,指纹是9f:71:de:3c:86:25:dd:f0:06:78:ab:ba:96:5a:e4:95.,你确定想要继续吗?

    说明: 理论上应该是对公钥的确认,由于公钥通过RSA算法加密,太长,不好直接比较,所以给公钥生成一个hash的指纹,方便比较。

    1. root@MissHou ~]# ssh 192.168.10.171
    2. The authenticity of host '192.168.10.171 (192.168.10.171)' can't be established.
    3. RSA key fingerprint is 9f:71:de:3c:86:25:dd:f0:06:78:ab:ba:96:5a:e4:95.
    4. Are you sure you want to continue connecting (yes/no)? yes

    说明:

    当客户端输入yes确认对方的公钥指纹后,server端的公钥就会被存放到客户机的用户家目录里~/.ssh/known_hosts文件中,下次再访问就直接通过密码登录,不需要再确认公钥。

    1. [root@client ~]# su - stu1
    2. [stu1@client ~]$ ssh 10.1.1.2
    3. The authenticity of host '10.1.1.2 (10.1.1.2)' can't be established.
    4. RSA key fingerprint is 9f:71:de:3c:86:25:dd:f0:06:78:ab:ba:96:5a:e4:95.
    5. Are you sure you want to continue connecting (yes/no)? yes
    6. Warning: Permanently added '10.1.1.2' (RSA) to the list of known hosts.
    7. stu1@10.1.1.2's password:

    四、SSH服务基本配置

    部署环境:需要2台云服务器,这里我用的是3A网络的,非常适合小白,容器操作,可以随时更换ip地址。

    • 基于秘钥对认证(免密码登录)——>重点掌握

    需求:client端有一个用户user01,该用户使用root用户免密码登录server端

    环境:

    client:10.1.1.3

    server:10.1.1.2

    思路:

    • client端生成一对秘钥

    • 将生成的公钥远程拷贝到server端

    步骤:

    1. client端的user01用户生成一对秘钥对
       

      1. [root@client ~]# useradd user01
      2. [root@client ~]# su - user01
      3. [user01@client ~]$ ls -a
      4. . .. .bash_logout .bash_profile .bashrc .emacs .gnome2 .mozilla
      5. [user01@client ~]$ ssh-keygen
      6. Generating public/private rsa key pair.
      7. Enter file in which to save the key (/home/user01/.ssh/id_rsa):
      8. Created directory '/home/user01/.ssh'.
      9. Enter passphrase (empty for no passphrase):
      10. Enter same passphrase again:
      11. Your identification has been saved in /home/user01/.ssh/id_rsa.

    2. 将刚刚生成的公钥远程拷贝到server端的root家目录里指定位置
       

      1. [user01@client ~]$ scp .ssh/id_rsa.pub root@10.1.1.2:/root/.ssh/authorized_keys
      2. 或者
      3. [user01@client ~]$ ssh-copy-id -i .ssh/id_rsa.pub root@10.1.1.2 (推荐)
      4. The authenticity of host '10.1.1.2 (10.1.1.2)' can't be established.
      5. RSA key fingerprint is 9f:71:de:3c:86:25:dd:f0:06:78:ab:ba:96:5a:e4:95.
      6. Are you sure you want to continue connecting (yes/no)? yes
      7. Warning: Permanently added '10.1.1.2' (RSA) to the list of known hosts.
      8. root@10.1.1.2's password:
    3. 测试验证
       

      1. [user01@client ~]$ ssh root@10.1.1.2
      2. Last login: Mon Apr 16 16:00:55 2018 from 10.1.1.1
      3. [root@server ~]#

  • 相关阅读:
    面试官: 有了解过线程池的工作原理吗?说说看
    viewport视口的概念
    openjudge_2.5基本算法之搜索_1998:寻找Nemo
    STM32的DMA
    日本SolarView Compact光伏发电测量系统 目录遍历漏洞复现(CVE-2023-40924)
    Java开发中对Redis的基本操作
    CSS box-sizing属性到底改变的是什么?
    Java中的泛型是什么?
    linux为所有用户安装conda
    “文心一言”的使用
  • 原文地址:https://blog.csdn.net/m0_56221131/article/details/126141998