linux ssh远程访问及控制

文章目录

  • 一、SSH远程访问
    • 1、概念
    • 2、系统服务-openssh
      • 2.1、系统软件包
      • 2.2、服务名称:sshd
      • 2.3、服务端配置文件参数详解
    • 3、实操
      • 3.1、实验环境准备
      • 3.2、ssh远程登录
        • 3.2.1、未更改端口号
        • 3.2.2、更改端口号
      • 3.3、PermitRootLogin no #禁止root用户登录
      • 3.4、MaxAuthTries 6 #重试次数
      • 3.5、黑白名单
  • 二、SSH秘钥对验证
    • 1、概述
    • 2、加密算法
      • 2.1、对称加密
      • 2.2、非对称加密
    • 3、实例了解签名、公钥、私钥
    • 4、实操
      • 4.1、免密交互
      • 4.3、加密交互
  • 三、SSH的通信模式
    • 1、非交互式-scp安全复制
    • 2、交互式-sftp安全传输

一、SSH远程访问

1、概念

ssh(secure shell)是一种安全性协议,端口tcp22端口,是应用层协议,
与telnet的区别:

  • telnet是明文传送;ssh是加密传送,并且支持压缩。
  • telnet的默认端口号为23;ssh的默认端口号为22.
  • ssh使用公钥对访问的服务器的用户验证身份,进一步提高的安全性;telnet没有使用公钥

2、系统服务-openssh

2.1、系统软件包

OpenSSH是linux系统的服务,随系统安装就安装,默认加入开启自启程序中。
系统的软件包

openssh-7.4p1-16.el7.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64

2.2、服务名称:sshd

 /usr/sbin/sshd            #服务端主程序
 /etc/ssh/sshd_config      #服务端配置文件
 /etc/ssh/ssh_comfig      # 客户端配置文件
rpm -ql openssh-server  #查询客户端安装的软件

linux ssh远程访问及控制_第1张图片
rpm -ql openssh-clients #查询服务端安装的软件
linux ssh远程访问及控制_第2张图片

tail /var/log/secure   #ssh的日志目录,用于排错

linux ssh远程访问及控制_第3张图片

2.3、服务端配置文件参数详解

以下主要讲解现网当中经常使用到的参数
linux ssh远程访问及控制_第4张图片
linux ssh远程访问及控制_第5张图片
linux ssh远程访问及控制_第6张图片
linux ssh远程访问及控制_第7张图片
每启一个进程/服务,都会在var/目录下穿绳一个服务名.pid文件,这个文件记录了目前的pid号
在这里插入图片描述

3、实操

3.1、实验环境准备

注意事项:
在所有虚拟机操作需要关闭三个内容

systemctl stop firewalld      #关闭防火墙
systemctl stop NetworkManager #关闭网络服务管理
getenforce  #查看Selinux状态
setenforce 0 #关闭SElinux

其中setenforce 0 是临时关闭SElinux,永久配置方式
vim /etc/selinux/config
linux ssh远程访问及控制_第8张图片
配置完成之后reboot重启虚拟机生效

3.2、ssh远程登录

3.2.1、未更改端口号

服务机更改名字为server
在这里插入图片描述
更改任何配置文件时,先备份

cp -p /etc/ssh/sshd_config{
     ,.bak}

查询发现已有备份文件
linux ssh远程访问及控制_第9张图片
编辑服务端主程序

vim /etc/ssh/sshd_config

更改端口号,随便数字147关闭用dns做域名解析
在这里插入图片描述
把UseDNS设置成no,关闭用dns做域名解析;否则客户端登录连接会很慢
在这里插入图片描述
systemctl restart sshd #重启服务
linux ssh远程访问及控制_第10张图片

ssh -t:检查ssh文件的语法错误

linux系统之间互相登录使用ssh命令

ssh root@服务端的ip   #客户端远程登录服务端时,使用命令

ssh -p 147 [email protected](未更改端口号可以直接登录)
此处因为更改了端口号,直接登录无法登录;提示端口号问题
在这里插入图片描述

3.2.2、更改端口号

更改端口号,客端户远程登录的2种方式:

  • -p:端口号linux ssh远程访问及控制_第11张图片
  • 进入客户端配置文件/etc/ssh/ssh_config 更改端口号,更改与服务端一样的端口号即可直接登录;客户端更改配置文件无须重启服务
    vim /etc/ssh/ssh_config
    在这里插入图片描述

在这里插入图片描述

3.3、PermitRootLogin no #禁止root用户登录

不给root登录,主配置文件更改为no 去掉注释#
编辑服务端配置文件 vim /etc/ssh/sshd_config
linux ssh远程访问及控制_第12张图片
systemctl restart sshd #重启服务
客户机用root远程登录服务机时,发现可以输入密码,但是一直让你输入密码且次数时3
linux ssh远程访问及控制_第13张图片

3.4、MaxAuthTries 6 #重试次数

这里要说到配置文件内的一个参数
配置认证尝试次数MaxAuthTries,默认是6次 “MaxAuthTries 6”
在这里插入图片描述
但是实际输入错误3次就退出了,是因为客户端配置里有一 项参数NumberOfPasswordPrompts的默认值是3;所以我们只能尝试登3次,这里是指客户端的尝试次数,服务器的是认证次数,服务器能认证几次取决于客户端能登陆几次!
客户端的尝试次数可以通过命令更改

-o:此linux是客户端,带选项表示可以尝试登录8次,但是服务器限制客户端只有6次认证的机会,所以只有六次,最大值就是6

linux ssh远程访问及控制_第14张图片

3.5、黑白名单

  • AllowUsers:白名单;仅允许
  • DenyUsers:黑名单;不允许
  • 黑白名单同时存在,黑名单优先
  • 配置方法
    白名单/黑名单在服务端的主配置文件增加一行,位置随意
    服务端创建新用户 lll
    linux ssh远程访问及控制_第15张图片
    以下分四种情况说明黑白名单的作用
  • 服务端主配置文件黑白名单都不配置时,客户端任何用户均可远程连接
    客户端远程连接 lll
    在这里插入图片描述
  • 服务端只配置白名单时,此时我们只配置root,验证结果
    在这里插入图片描述
    此时用户lll不在白名单里面无法远程交互
    linux ssh远程访问及控制_第16张图片
  • 用户lll同时加入黑白名单,发现黑名单优
    在这里插入图片描述
    输入三次密码,告知不被许可连接
    linux ssh远程访问及控制_第17张图片
  • 黑白名单可以允许用户指定的主机登录
    在这里插入图片描述
    这时就可以在192.168.35.20的主机上远程连接客户端
    在这里插入图片描述

二、SSH秘钥对验证

1、概述

SSH协议是采用了基于密钥的安全验证方式用于远程管理的,需要依靠密钥,也就是必须事先建立一 对密钥对,然后把公用密钥(锁头) (Public key)放在需要访问的目标服务器上,另外,还需要把私有密钥(钥匙) (Privatekey)放到SSH的客户端或对应的客户端服务器上。

2、加密算法

2.1、对称加密

  • 概念
    采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用
  • 常用算法
    在对称加密算法中常用的算法有: DES、3DES、 TDEA、 Blowfish、 RC2、RC4、 RC5、 IDEA、 SKIPJACK等。
  • 特点
    • 加密方和解密方使用同一个密钥;
    • 加密解密的速度比较快,适合数据比较长时的使用;
    • 密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
  • 优缺点
    对称加密算法的优点是算法简单,速度快;
    对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露, 那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一 秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。

2.2、非对称加密

  • 概念:
    发生方和接收方在本地都会产生一对私钥和公钥;非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥) 和私有密钥(privatekey:简称私钥) 。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
  • 常用算法
    • RSA (RSA algorithm) :目前使用最广泛的算法
    • DSA (Digital Signature Algorithm) :数字签名算法,和RSA不同的是DSA仅能用于数字签名, 不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快
    • ECC (lliptic curve cryptography, 椭圆曲线加密算法)
    • ECDSA: Eliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和DSA的结合,相比于RSA算法,ECC可以使用更小的秘钥,更高的效率,提供更高的安全保障
  • 原理
    首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致, SSH服务器就用公钥加密"质询" (challenge)并把它发送给SSH客户端。
  • 特点
    私钥不能在网络中传输,私钥可以解密公钥
    公钥可以在网路中传输,公钥不能解密私钥

3、实例了解签名、公钥、私钥

实例1linux ssh远程访问及控制_第18张图片
L发送数据W给Z,需要使用Z的公钥加密W,Z用私钥打开得到W
若有一个Y发送带有病毒的Z的公钥1给Z,那么Z会使用私钥打开公钥1,就会中病毒,为了防止这种情况产生,会在L上使用私钥加上签名,为了让Z识别,Z通过签名识别是L发送的公钥,Z使用自己的私钥打开公钥W

实例二:
那么在ssh层面,虚拟机时如何加密解密的
linux ssh远程访问及控制_第19张图片
客户端和服务端连接过程如下:

  • 用工具制作公钥和私钥
    client产生公钥和私钥
    server产生公钥和私钥
  • 第一次建立连接时,客户端把公钥发送给server,server保存客户端的公钥
  • 当真正需要建立连接时,客户端带着公钥一并发起建立连接的请求
  • 若客户端的公钥与server接收的客户端的公钥一致
    • 这时server会拿客户端的公钥加密一串随机的数据发货给客户端,客户端拿自己的私钥解密这串数据,发送回给服务端
    • server收到客户端解密国购的数据,发现就是服务端加密的数据,这时就认为此客户端是受信任,允许建立连接
  • 若客户端的公钥与server接收的客户端的公钥不一致
    server会要求客户端再次发生公钥给其,再验证一次,验证成功之后就是客户端的公钥与server接收的客户端的公钥一致

4、实操

实验要求:在服务机上实现无密码的远程交互和加密远程交互
总结就2步:

  1. 用工具制作公钥和私钥
  2. 把公钥发给服务器
  3. 具体如何验证公钥和私钥,就是底层的问题了

4.1、免密交互

1、在客户端制作公钥和私钥:

ssh-keygen               #创建公钥和私钥
-t:选择密码算法,默认RSA  #可不写

linux ssh远程访问及控制_第20张图片
linux ssh远程访问及控制_第21张图片

ssh-copy-id root@192.168.245.100 #把公钥id传到服务端root用户
ssh-copy-id -i 指定文件的路径 root@192.168.245.100 #把公钥id安装指定文件路径传给服务端root用户;一般不需要指定

authorized_keys #记录公钥文件,在服务端;目录如下
linux ssh远程访问及控制_第22张图片
也可以看一下服务端的公钥内容,发现与客户端是一致的
cat ip_rsa_pub
linux ssh远程访问及控制_第23张图片
known_hosts #记录建立连接的用户记录,多个客户端连接时追加的形式写入
linux ssh远程访问及控制_第24张图片
验证登录密码,发现无须使用密码,即可实现远程交互
在这里插入图片描述

4.3、加密交互

给客户端的私钥加密
linux ssh远程访问及控制_第25张图片
切换到.ssh/目录下看下加密之后的私钥文件 id_rsa
linux ssh远程访问及控制_第26张图片
这个是没有加密的私钥文件,可以看出来与加密之后还是有区别的
linux ssh远程访问及控制_第27张图片
把公钥id传到服务端root用户
linux ssh远程访问及控制_第28张图片
在客户端远程登录出现需要输入私钥的秘钥
linux ssh远程访问及控制_第29张图片
这时密码校验完成登录成功
在这里插入图片描述

三、SSH的通信模式

ssh包含了scp(安全复制,非交互式)和sftp协议(安全传输,交互式);s是secure,安全的意思

1、非交互式-scp安全复制

本机传到服务器
在这里插入图片描述
查询服务端已有文件
linux ssh远程访问及控制_第30张图片
服务器传本机
linux ssh远程访问及控制_第31张图片
scp -rp:带属性递归复制;用法和cp一样
在这里插入图片描述
服务端查询已有ll文件
在这里插入图片描述
若更改了端口号时复制
需要使用大写的P指定端口
在这里插入图片描述

2、交互式-sftp安全传输

put  #上传  
get  #下载

linux ssh远程访问及控制_第32张图片
ls:查看连接的服务器的目录下
lls # 执行命令的目录下 如上图在tmp目录下执行sftp命令
linux ssh远程访问及控制_第33张图片

你可能感兴趣的:(linux系统,ssh,openssh)