Bootstrap

SSH远程访问

一、OpenSSH服务器

1. SSH(Secure Shell)协议

  1. 是一种安全通道协议
  2. 对通信数据进行了加密处理,用于远程管理

2.OpenSSH服务

  1. 服务名称:sshd
  2. 服务端主程序:/usr/sbin/sshd
  3. 服务端配置文件:/etc/ssh/sshd_config

3.用户登录控制

  1. 禁用root用户、空密码用户

  2. 限制登录验证时间、重试次数

  3. AllowUsers、DenyUsers

    vi  /etc/ssh/sshd_config                   #进入编辑
    
 LoginGraceTime  2m           #限定密码登录的访问时间
                                           如别人用SSH远程访问,2分钟没有输入密码就 
                                          会显示超时
 PermitRootLogin  no           #不允许root账号登录,Yes是允许,默认是Yes
 MaxAuthTries     6               #最大尝试密码的次数是6次,超过6次服务器会断开
 PermitEmptyPasswords   no   #不允许空密码登录
 ........
 AllowUsers   jerry  [email protected]       #白名单
 jerry、admin:只允许这2个用户访问
 61.23.24.25:客户机的IP

注:AllowUsers 白名单、DenyUsers 黑名单,两个不能同时使用

3.1白名单项目实施
  1. 先进ssh

     vi  /etc/ssh/sshd_config          
    

按大G到文件的最后一行,小o从光标处所在行之下插入一个新行内容
输入AllowUsers lisi [email protected]客户机的IP(指定被远程的客户机IP地址)
wq保存退出
在这里插入图片描述
2. 重启sshd服务

systemctl  restart   sshd          #重启sshd服务
创建白名单允许的访问的用户
useradd  lisi 
passwd   lisi
123123

useradd zhangsan
passwd zhangsan
123123

在这里插入图片描述
3. 然后去白名单指定的客户机ip地址的机器上测试是否可以用SSH远程到本机的账户

 ssh   [email protected]   -p   22     #使用ssh登录要登录的客户机ip地址
 whoami           #表示我是谁
 exit             #登出

在这里插入图片描述

3.2黑名单项目实施
  1. 先进ssh

    vi  /etc/ssh/sshd_config
                改为
     DenyUsers   [email protected]            #把lisi放入黑名单,20.0.0.15这个客户机是ssh远程
                                             不上本机          (20.0.0.14)的lisi账户的
    

在这里插入图片描述

  1. 测试

     上面已经把lisi账户放入黑名单,用20.0.0.14的ip的客户机用ssh远程本机(20.0.0.15)的lisi账户
     是远程不上的,连续输入3次密码不管是否正确,最后都会返回为客户机的初始账户。
    

在这里插入图片描述

  1. 客户机远程本机登录账户,除本机黑名单意外的账户,其他账户都可以远程通过

     ssh    [email protected]                 #登录20.0.0.14机器的zhangsan账户
     exit                                      #退出 
    

在这里插入图片描述

4.登录验证方式

登录验证方式
密码验证:核对用户明、密码是否匹配
密钥对验证:核对客户的私钥、服务端公钥是否匹配

密钥分为:公钥与私钥
公钥:大家都可以有这个钥匙,解的是私钥锁
私钥:私钥解的是公钥的锁
  1. 生成密钥对的过程

    ssh-keygen  -t  rsa             #生成密钥的方式
    ls   -lh           #只能查看到没有加密、没有隐藏的文件是可以看到的
    ls   -lah         #可以查看到加密、隐藏的文件
    cd  .ssh/       #进入.ssh目录
    ls  -lah            #查看.ssh目录中的文件
    会生成两条文件,第一条是私钥,第二条是公钥    
    

在这里插入图片描述

  1. 数据加密
    1. 发送方使用接收方的公钥加密数据
    2. 接收方使用自已的私钥解密数据
    3. 数据加密能保证所发送数据的机密性

在这里插入图片描述

  1. 数字签名
    1. 对原始数据执行HASH算法得到摘要值
    2. 发送方用自已私钥加密摘要值
    3. 将加密的摘要值与原始数据发送给接收方

注:数字签名保证数据完整性、身份验证和不可否认

在这里插入图片描述

二、使用SSH客户端程序

1. ssh命令

  用途:远程安全登录、端口选项:-p  22
  格式:ssh  user@host
  
   ssh  [email protected]
   yes
   20.0.0.15的root密码:123456
   whoami        #查看本身是谁
   ifconfig      #查看本身是哪个IP地址

在这里插入图片描述

2. scp命令

用途:远程安全复制

格式1:scp user@host:file1 file2
格式2:scp file1 user@host:file2

   //格式1
   echo   "abc123" >a.txt          #本地生成一个a.txt文件
   scp  /root/a.txt  [email protected]:/opt         #把本地的root目录下的a.txt文件拷贝到用户
                                                   名为root的20.0.0.15ip地址的opt目录下

在这里插入图片描述

在这里插入图片描述
2.1. 在20.0.0.15的opt目录下创建文件信息,然后在去20.0.0.14上下载20.0.0.15的文件

  // 格式2
 scp   [email protected]:/opt/1  /root     #拷贝20.0.0.15上的root账户下opt目录下的1文件,拷贝
                                          到本机的root目录下

在这里插入图片描述

3. sftp命令

用途:安全FTP上下载
格式:sftp  user@host
注:sftp访问的都是文件的家目录  

   sftp   [email protected]   #登录上20.0.0.15这个用户的家目录  

在这里插入图片描述
3.1. 在服务器上创建文件

cd  /home/fa         #进入家目录
touch   ky07         #创建一个ky07文件

在这里插入图片描述
3.2 在客户机上测试

sftp   [email protected]     #sftp访问20.0.0.15的fa目录,访问进去直接进的是fa的家目录

在这里插入图片描述

三、构建密钥对验证的SSH体系

  1. 在客户机中创建密钥对

    [zhangsan@server2 ~]$ ssh-keygen -t ecdsa
    
    Generating public/private ecdsa key pair.
    Enter file in which to save the key (/home/zhangsan/.ssh/id_ecdsa):    #默认存储位置
    Created directory '/home/zhangsan/.ssh'.                
    Enter passphrase (empty for no passphrase):         #对密钥进行设置密码加密
    Enter same passphrase again:      #设置密钥短语,再次输入密码,建议设置的时候谨慎
    Your identification has been saved in /home/zhangsan/.ssh/id_ecdsa.  #私钥文件位置
    Your public key has been saved in /home/zhangsan/.ssh/id_ecdsa.pub   #公钥文件位置
    
  2. 将公钥文件上传至服务器

    [zhangsan@localhost ~]$ scp ~/.ssh/id_ ecdsa.pub [email protected]:/tmp
                     拷贝   公钥文件位置      到root用户ip地址的tmp目录下
    
  3. 在服务器中导入公钥文本

     mkdir  /home/lisi/.ssh/                                       #以mkdir的形式创建lisi,lisi是本身存在的
     cat  /tmp/id_ecdsa.put  >> /home/lisi/.ssh/authorized_keys    #把公钥文件的内容追加到lisi的.ssh目录的authorized_keys文件下
     tail  -1  /home/lisi/.ssh/authorized_keys                     #查看文件内容最后一行
    
  4. 客户端使用密钥对验证登录

    [zhangsan@localhost ~]$ ssh [email protected] #登录到lisi的家目录下
    [lisi@localhost ~]$ whoami
    lisi
    

项目操作

  1. 在客户机上创建用户

     useradd  wangwu     #创建用户
     passwd   wangwu     #设置密码
    

在这里插入图片描述

  1. 生成密钥

     [root@server1 ~]# su zhangwe       #切换到wangwu用户
     [zhangwe@server1 root]$ ssh-keygen -t rsa    #生成密钥的过程
     [zhangwe@server1 root]$ ls -lah    #查看,权限不够
     [zhangwe@server1 root]$ exit       #退出
    

在这里插入图片描述

  1. 添加到组内,提升权限

    sudo  /usr/bin/ls  -lah         #授权
    cd  /home/wangwu
    ls    -lah                      #查看所有文件包括有密码的,隐藏的文件
    

在这里插入图片描述

  1. 查看生成的密钥文件
    在这里插入图片描述

  2. 将公钥文件上传至服务器

    scp  id_rsa.pub  [email protected]:/tmp     #拷贝公钥到root用户的客户机ip地址是20.0.0.15的
                                               tmp目录下
    

在这里插入图片描述

  1. 在服务器(20.0.0.15)上去查看

在这里插入图片描述

  1. 把文件拷贝到用户lisi上
    先创建用户lisi,目录
    在服务器上

    [root@server3 tmp]# useradd lisi                  #创建用户
    [root@server3 tmp]# mkdir /home/lisi/.ssh         #创建目录
    [root@server3 tmp]# cat id_rsa.pub >> /home/lisi/.ssh/authorized_keys   #追加文件内容
    [root@server3 tmp]# cat /home/lisi/.ssh/authorized_keys    #查看文件是否存在
    

在这里插入图片描述

  1. 测试
    客户机(20.0.0.14)远程登录服务器(20.0.0.15)
    客户端使用密钥对验证登录

     ssh   [email protected]             #用ssh远程登录服务器
    

在这里插入图片描述

;