Linux服务器搭建 -- SSH服务

什么是远程连接服务器

        远程连接服务器通过文字或图形接口方式来远程登陆系统,让你在远程登陆终端前登录Linux          主机以取得可操作主机接口(shell),登录后的操作就像是坐在系统前面一样

什么时候需要远程登陆

        在疫情封控时期,我们需要居家办公,有时需要远程调试我们的服务器;在工作站和总公司            之间,当总公司需要调取资源的时候也需要远程登录等等

远程连接服务器的类型(以登录的连接界面来分类)

  • 文字接口:SSH(Secure Shell Protocol,安全的壳程序协议)它可以通过数据包加密技术将等待传输的数据包加密后在传输到网络上。SSH本身提供两个服务器功能:一个类似telnet的远程登陆使用shell的服务器;另一个是类似于ftp的sftp-server,提供更安全的ftp服
  1. 明文传输:Telnet,RSH等,因为不安全,少部分在用
  2. 加密传输:SSH为主,基本取代明文传输
  • 图形接口:XDMCP、VNC、XRDP等

上面提到了数据/连接加密,怎么加密?

        现在主要分为三种加密方式:对称加密,非对称加密,对称加密与非对称加密相结合

  • 对称加密

        对称加密就是加密和解密都用同一个密钥,就像战争时使用的密码本一样

        优点:算法简单,加解密简单,效率高,执行快

        缺点:相对来说不安全,因为两把钥匙是一样的,如果密钥泄露,那么数据将变得不再安全

        常见的对称加密算法:DES,AES,3DES

  • 非对称加密

        非对称加密引入了密钥对的概念,一个密钥对又分为公钥和私钥,公钥用于对外发布,私钥

        则自己保留;用公钥加密的数据只能用同一对的私钥解开,用私钥加密的数据只能用同一对

        的公钥解开。

                例如翠花跟熊二传数据,翠花先用熊二对外公布的公钥进行加密,然后熊二再用自己的

                私钥解密就能看到内容,同样的,熊二给翠花传数据,熊二先用翠花对外公布的公钥进

                行加密,翠花再用自己的私钥进行解密

        优点:安全,即使密文和公钥被拦截,但是由于无法获取到私钥,也就无法破译密文

        缺点:加密算法复杂,安全性依赖算法和密钥,且加解密效率低

        常见的非对称加密:RSA,DSA,ECC

  • 两种技术相结合

        还是熊二和翠花通信,熊二先对要传输的数据摘要进行哈希运算,然后再用自己的私钥对数

        据摘要的进行加密,然后再用翠花的公钥进行加密;数据到达翠花那端,翠花先用自己的私

        钥进行解密,在用熊二的公钥对数据摘要进行解密,再对数据摘要进行哈希运算,比较两次

        的哈希值是否相同来判断数据是否被篡改

SSH连接过程

        ssh连接过程分为ssh版本协商、密钥交换(非对称加密RSA,DSA)、认证阶段(对称加

        密)、数据通信阶段(对称加密)

  • SSH协议版本协商阶段:

        客户端通过TCP三次握手与服务器的SSH端口建立TCP连接。服务器通过建立好的连接向客

        户端发送一个包含SSH版本信息的报文,格式为"SSH-

        版本号>-<软件版本号>",软件版本号主要用于调试。(SSH分为SSH2和SSH1两个版本,且

        SSH2向下兼容SSH1。)客户收到版本号信息后,如果服务器使用的协议版本号比自己低,

        但是客户端可以向下兼容,则可以通信;如果是客户端的SSH版本号低于服务端的SSH版

        本,则不能够建立连接,因为只有主动连接的一方可以向下兼容

  • 密钥交换

        服务端分别发送算法协商报文给对端,报文中包括自己支持的公钥算法列表、加密算法列

        表、MAC(Message Authentication Code,消息验证码)算法列表、压缩算法列表等;与版

        本协商阶段相似,服务端和客户端根据自己和对端支持的算法来决定最终要使用的各个算

        法。选择完以后,服务端将会在/etc/ssh目录下生成相关的公钥和私钥,自己的公钥将会明文

        传输过去,客户端收到公钥以后,将在客户端生成的密钥通过服务端的公钥加密传输过去,

        一下简称客户端生成的密钥为密钥

  • 认证阶段

        客户端向服务器发送认证请求,请求中包含用户名,认证方法,密码,这些将用密钥加密,

        服务端对客户端进行认证,认证失败,则向客户端发送失败消息,其中包含可以再次认证的

        方法列表。

        客户端再次使用支持的认证方法中的一种进行认证,知道达到认证次数上限被服务器中止连

        接,或者被服务器认证成功

        SSH支持的两种认证方式:

                密码认证:客户端通过用户名/密码进行认证,将使用会话密钥加密后的用户名和密码发

                送给服务器,服务器解密后与系统保存的用户名和密码进行对比,并向客户端返回认证

                成功或失败的消息

                密钥认证(免密认证):采用数字签名来进行认证,目前可以通过RSA和DSA两种算法

                实现数字签名,客户端通过用户名,明耀以及公钥算法等信息来与服务器完成验证。

  • 数据通信阶段

        客户端的指令将通过加密发送给客户端,服务端收到后,解密命令,执行结果加密返回客户

        端,客户端将返回结果解密后显示到终端上

SSH服务的搭建

  • 下载SSH安装包

        dnf install openssh-server

Linux服务器搭建 -- SSH服务_第1张图片

  • 修改配置文件

        ssh配置文件的路径:/etc/ssh/sshd_config

        ssh默认配置文件中的重要字段

         17 #Port 22 -- 监听端口,默认监听22端口[默认可修改]

         18 #AddressFamily any -- ipv4和ipv6用哪个,any表示二者均有

         19 #ListenAddress 0.0.0.0 -- 指明监听的地址,0.0.0.0表示本机的所有地址[默认可修改]

         20 #ListenAddress :: -- 指明监听ipv6的所有地址格式

         22 HostKey /etc/ssh/ssh_host_rsa_key -- rsa私钥认证[默认]

         23 HostKey /etc/ssh/ssh_host_ecdsa_key -- dsa私钥认证

         24 HostKey /etc/ssh/ssh_host_ed25519_key -- ed25519私钥认证

         40 SyslogFacility AUTHPRIV -- 当有人使用ssh登陆系统的时候,ssh会记录信息,信息保存

        在/var/log/sercure里卖弄

         41 #LogLevel INFO -- 日志的等级

         45 #LoginGraceTime 2m -- 登陆的宽限时间,默认两分钟没有输入密码,则自动断开连接

         46 PermitRootLogin yes -- 是否允许管理员远程登录,yes代表允许

         47 #StrictModes yes -- 是否让sshd去检查用户主目录或相关文件的权限数据

         48 #MaxAuthTries 6 -- 最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段

        时间后才能再次输入密码

         49 #MaxSessions 10 -- 允许最大会话数

         55 AuthorizedKeysFile      .ssh/authorized_keys -- 选择基于密钥验证时,客户端生成一对公

        私钥之后,会将公钥放到.ssh/authorized_keys里面

         71 #PasswordAuthentication yes -- 是否允许基于口令的认证

         76 #ChallengeResponseAuthentication yes -- 是否允许使用键盘输入身份验证,也就是

        XShell的第三个登陆方式

         124 #UseDNS no --是否反解DNS,如果想让客户端连接客户端快一点,可以改为no

         125 #allowUser username  -- 允许特定用户ssh登录,其他用户都无法登录

Linux如何生成密钥

        生成密钥,使用指令ssh-keygen -t rsa

                ssh-keygen -- 生成、管理和转换密钥  -t -- 知道类型

        生成的密钥将存放在/root/.ssh/下

        复制该公钥文件到服务端的家目录下的.ssh目录

                使用指令scp /root/.ssh/id_rsa.pub root@服务端ip:/root/.ssh/authorized_keys

        之后可以直接登录服务端

        使用指令:ssh 服务端ip或ssh -i /root/.ssh/id_rsa root@服务端ip

sftp的用法

        sftp的用法(服务端ip为172.24.8.128)

        sftp下可以使用的指令:ls、mkdir、pwd、chgrp、chown、chmod、ln、rm、exit、bye、quit

        对于客户端可用的指令:lcd(切换目录)、lls、lpwd

        将文件由本机上传到远程主机:put [本机文件],文件会存储到当前远程主机的目录下

        将文件由本机下载到远程主机:get [远程主机文件文件],文件会存储到当前主机的目录下

实现虚拟机和虚拟机之间使用密钥进行登录

  • 创建密钥对,使用命令ssh-keygen
  • 复制该公钥文件到服务端的该目录下,使用命令scp /root/.ssh/authorized_keys
  • root@ServerAddres:/root/.ssh/authorized_keys
  • 在本地服务器上登录到对端服务器

实现XShell使用密钥验证登陆

客户端:使用XShell工具的用户密钥管理生成公钥和私钥,

  • Linux服务器搭建 -- SSH服务_第2张图片
  • 然后将公钥上传至服务端将要登录的用户的家目录下的.ssh/下,并重命名为authorized_keys

服务端:通过修改配置文件取消使用密码进行远程登录并重启服务,并开启RSA认证登录,开启公钥认证登录,设置公钥文件的路径,具体配置如下图

Linux服务器搭建 -- SSH服务_第3张图片

  • 重启服务,使用命令systemctl restart sshd

你可能感兴趣的:(liunx服务器入门到入坟,服务器,linux,ssh)