远程连接服务器简介

SSH是如何工作的?

认证阶段

ssh修改配置文件

配置文件注释

练习

试验1

实验2

测试


 远程连接服务器简介

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

2、远程连接服务器的功能

分享主机的运算能力

服务器类型:有限度开放连接

工作站类型:只对内网开放

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

文字接口

明文传输:Telnet、RSH等,目前非常少用

加密传输:SSH为主,已经取代明文传输

图形接口:XDMCP、VNC、XRDP等

4、文字接口连接服务器

SSH(Secure Shell Protocol,安全的壳程序协议)它可以通过数据包加密技术将等待传输的数据包加密后再传输到网络上。ssh协议本身提供两个服务器功能:一个是类似telnet的远程连接使用shell的服务器;另一个就是类似ftp服务的sftp-server,提供更安全的ftp服务。

例如Telnet、FTP,使用明文传输数据,存在很多的安全隐患。随着人们对网络安全的重视,这些方式已经慢慢不被接受。SSH协议通过对网络数据进行加密和验证,在不安全的网络环境中提供了安全的登录和其他安全网络服务。作为Telnet和其他不安全远程shell协议的安全替代方案,目前SSH协议已经被全世界广泛使用,大多数设备都支持SSH功能。

5.SSH端口号是什么?

当SSH应用于STelnet,SFTP以及SCP时,使用的默认SSH端口都是22。当SSH应用于NETCONF时,可以指定SSH端口是22或者830。SSH端口支持修改,更改后当前所有的连接都会断开,SSH服务器开始侦听新的端口。


SSH是如何工作的?

SSH由服务器和客户端组成,在整个通信过程中,为建立安全的SSH通道,会经历如下几个阶段:

  1. 连接建立

    SSH服务器在指定的端口侦听客户端的连接请求,在客户端向服务器发起连接请求后,双方建立一个TCP连接。

  2. 版本协商

    SSH协议目前存在SSH1.X(SSH2.0之前的版本)和SSH2.0版本。SSH2.0协议相比SSH1.X协议来说,在结构上做了扩展,可以支持更多的认证方法和密钥交换方法,同时提高了服务能力。SSH服务器和客户端通过协商确定最终使用的SSH版本号。

  3. 算法协商

    SSH支持多种加密算法,双方根据各自支持的算法,协商出最终用于产生会话密钥的密钥交换算法、用于数据信息加密的加密算法、用于进行数字签名和认证的公钥算法以及用于数据完整性保护的HMAC算法。

  4. 密钥交换

    服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和会话ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。

  5. 用户认证

    SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证。SSH支持以下几种认证方式:

    • 密码(password)认证:客户端通过用户名和密码的方式进行认证,将加密后的用户名和密码发送给服务器,服务器解密后与本地保存的用户名和密码进行对比,并向客户端返回认证成功或失败的消息。
    • 密钥(publickey)认证:客户端通过用户名,公钥以及公钥算法等信息来与服务器进行认证。
    • password-publickey认证:指用户需要同时满足密码认证和密钥认证才能登录。
    • all认证:只要满足密码认证和密钥认证其中一种即可。
  6. 会话请求

    认证通过后,SSH客户端向服务器端发送会话请求,请求服务器提供某种类型的服务,即请求与服务器建立相应的会话。

  7. 会话交互

    会话建立后,SSH服务器端和客户端在该会话上进行数据信息的交互。


认证阶段

SSH提供两种认证方法:

  • 基于口令的认证(password认证):客户端向服务器发出password认证请求,将用户名和密码加密后发送给服务器,服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败消息。
  • 基于密钥的认证(publickey认证):客户端产生一对公共密钥,将公钥保存到将要登录的服务器上的那个账号的家目录的.ssh/authorizedkeys文件中。认证阶段:客户端首先将公钥传给服务器端。服务器端收到公钥后会与本地该账号家目录下的authorizedkeys中的公钥进行对比,如果不相同,则认证失败;否则服务端生成一段随机字符串,并先后用客户端公钥和会话密钥对其加密,发送给客户端。客户端收到后将解密后的随机字符串用会话密钥发送给服务器。如果发回的字符串与服务器端之前生成的一样,则认证通过,否则,认证失败。
  • :服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。客户端从认证方法列表中选取一种认证方法再次进行认证,该过程反复进行。直到认证成功或者认证次数达到上限,服务器关闭连接为止

ssh修改配置文件

ssh配置文件:/etc/ssh/sshd_config

配置文件注释

修改配置文件

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.# The default requires explicit activation of protocol 1  
23.#Protocol 2            #使用SSH第二版本
25.# HostKey for protocol version 1    #一版的SSH支持以下一种秘钥形式
26.#HostKey /etc/ssh/ssh_host_key
27.# HostKeys for protocol version 2   #使用第二版本发送秘钥,支持以下四种秘钥认证的存放位置
28.HostKey /etc/ssh/ssh_host_rsa_key       # rsa私钥认证 【默认】
29.#HostKey /etc/ssh/ssh_host_dsa_key      # dsa私钥认证
30.HostKey /etc/ssh/ssh_host_ecdsa_key     # ecdsa私钥认证
31.HostKey /etc/ssh/ssh_host_ed25519_key   # ed25519私钥认证
35.#ServerKeyBits 1024     #主机秘钥长度
40.# Logging
41.# obsoletes QuietMode and FascistLogging
42.#SyslogFacility AUTH
43.SyslogFacility AUTHPRIV    #当有人使用ssh登录系统的时候,SSH会记录信息,信息保存在/var/log/secure里面
44.#LogLevel INFO           #日志的等级
45.# Authentication:
48.#LoginGraceTime 2m      #登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
49.#PermitRootLogin yes      #是否允许管理员远程登录,'yes'表示允许
50.#StrictModes yes      #是否让sshd去检查用户主目录或相关文件的权限数据
51.#MaxAuthTries 6     #最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码
52.#MaxSessions 10    #允许的最大会话数
59.AuthorizedKeysFile .ssh/authorized_keys  #选择基于密钥验证时,客户端生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面
79.PasswordAuthentication yes      #是否允许支持基于口令的认证
83.ChallengeResponseAuthentication no   #是否允许使用键盘输入身份验证,也就是xshell的第三个登录方式
129.#UseDNS yes   #是否反解DNS,如果想让客户端连接服务器端快一些,这个可以改为no
146.Subsystem sftp /usr/libexec/openssh/sftp-server     #支持 SFTP ,如果注释掉,则不支持sftp连接
154.AllowUsers user1 user2    #登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录

练习

实验1.两台机器:第一台机器作为客户端,第二台机器作为服务器,在第一台使用rhce用户免密登录第二台机器

第1步:创建目录

mkdir /etc/.ssh

第2步:在客户端,生成公钥和私钥
在Linux上使用的ssh-keygen的命令:ssh-key-generate: 生成ssh的密钥

ssh-keygen -t rsa -b 2048

第3步:使用本地可用的密钥授权远程计算机上的登录

ssh-copy-id -i root@192.168.233.233(服务器的IP)

尝试在第一台机器登录第二台机器(登录成功)

实验2.禁止root用户远程登录和设置三个用户sshuser1, sshuser2, sshuser3, 只允许sshuser3登录,不允许sshuser1, sshuser2登录

第1步(创建三个用户,并且配置密码123456)

[root@fanshun /]# useradd sshuser1
[root@fanshun /]# useradd sshuser2
[root@fanshun /]# useradd sshuser3
[root@fanshun /]# echo "123456"|passwd --stdin sshuser1
Changing password for user sshuser1.
passwd: all authentication tokens updated successfully.
[root@fanshun /]# echo "123456"|passwd --stdin sshuser2
Changing password for user sshuser2.
passwd: all authentication tokens updated successfully.
[root@fanshun /]# echo "123456"|passwd --stdin sshuser3
Changing password for user sshuser3.
passwd: all authentication tokens updated successfully

第2步(禁止root用户远程登录,只允许sshuser3登录,不允许sshuser1, sshuser2登录)

AllowUsers sshuser3
PermitRootLogin no

第3步(重启sshd服务)

systemctl restart sshd

第4步(测试root是否可以远程连接,sshuser3可否登录,sshuser1可否登录)

root测试

sshuser3测试

sshuser1测试

测试成功

全网最全ssh:远程连接服务器学习,教你十分钟学会相关推荐

  1. 【深度学习环境】Windows10系统+AutoDL算力平台|使用MobaXterm终端工具实现SSH远程连接服务器|实现PyCharm与服务器远程连接|远程连接(详细版)

    目录 前言:本机与服务器的连接流程及解释 1. 安装Pycharm专业版 2. 在AutoDL官网租用显卡(GPU) 3. 使用MobaXterm终端工具实现SSH远程连接服务器 4. PyCharm ...

  2. 【个人学习记录】pycharm配置ssh远程连接服务器

    文章目录 前言 步骤 一.配置ssh 二.添加python解释器 总结 前言 pycharm配置ssh远程连接服务器跑模型 需要用到: PyCharm专业版 XShell 步骤 一.配置ssh Hos ...

  3. 【已解决】linux ssh 远程连接服务器,出现登陆慢、打字卡顿输入卡顿解决方案

    目录&索引 问题描述 解决方案 登陆慢 方法 1:修改配置文件 nsswitch_conf 方法 2:修改配置文件 sshd_config UseDNS 方法 3:修改配置文件 sshd_co ...

  4. VS Code使用ssh远程连接服务器报错:过程试图写入的管道不存在

    VS Code使用ssh远程连接服务器报错:过程试图写入的管道不存在 1. ssh.exe来源:由openssh改为git 普通的win10系统中一般使用的是原始的OpenSSH中的ssh,在最初遇到 ...

  5. 【vscode远程开发】使用SSH远程连接服务器 「内网穿透」

    文章目录 视频教程 1.安装OpenSSH 2.vscode配置ssh 3. 局域网测试连接远程服务器 4. 公网远程连接 4.1 ubuntu安装cpolar 4.2 创建隧道映射 4.3 测试公网 ...

  6. 解决ssh远程连接服务器出现的中文乱码问题

    ssh远程连接服务器出现中文乱码主要分为两种: 1.命令行输出的中文有乱码 比如ll输出的月份,ibus等命令输出的信息 2.vim打开文件,文件显示乱码 解决命令行输出中文有乱码 1.查看使用的XS ...

  7. ssh远程执行服务器命令,ssh远程连接服务器执行命令

    问题 首先说一下使用ssh远程连接服务器执行命令的方法: 为了方便描述,这里把测试服务器称之为A1,目标服务器称之为A2 A1与A2之间首先要建立ssh免密登录,在A1上生成公钥和私钥 ssh-key ...

  8. Linux中怎么搭建SSH远程连接服务器

    文章目录 Linux中怎么搭建SSH远程连接服务器 一.远程连接服务器: 1.什么是远程连接服务器: 2.远程连接服务器的功能 3.常见的几种远程管理工具方式: 二.SSH连接加密技术: 1.非对称密 ...

  9. (一)ssh远程连接服务器GPU以及其他GPU使用途径——新手指南

    前言 最近在训练语义分割网络时决定使用GPU,本文记录新手在使用GPU时遇到的一些坑.想要在win10系统上配置GPU运行Pytorch代码可以考虑以下几种方式: 安装cuda,以及GPU版本的pyt ...

最新文章

  1. 懂了!VMware/KVM/Docker原来是这么回事儿
  2. python移除链表元素
  3. 走近NAP功能 全面了解Vista系统安全机制
  4. item不可见 recycleview_RecyclerView不显示Item
  5. springboot 中使用 Mybatis 注解 配置 详解
  6. python爬虫requests源码链家_Python爬虫之---爬链家
  7. centos查看是否安装了某个软件
  8. 刚刚,美国因「光纤断裂」大规模瘫痪,影响微软、Github和Netflix等服务
  9. P2313 [HNOI2005]汤姆的游戏
  10. C语言字符串函数(strcpy,strlen,strcat,stsstr,strchr,strcmp,memcpy,memmove)
  11. html5移动端单视频播放代码,js移动端视频播放代码
  12. 2台电脑共享一套键鼠方法
  13. 数据分析系统的流程图及架构图
  14. creo绘图属性模板_creo完整制作工程图模板.docx
  15. 声卡接口Line in、Line out、Mic in和Speak out
  16. Android系统之制作开机LOGO
  17. [计算几何]Last Stardust
  18. 在 UltraEdit /UEStudio 中配置自动更正关键字
  19. 戴尔服务器虚拟 介质,使用Dell R710 IDRAC挂载虚拟介质
  20. 航空专场 | 无人机设计仿真流程讲解与案例实操

热门文章

  1. 计算机毕业设计django基于python爬虫系统
  2. oracle 特殊的字符,Oracle一些特殊字符转义
  3. Hamachi 愚人节介绍一款小软件
  4. 读易[3]·重视团队中的个性(睽卦)
  5. 网站设计的思考网页版面布局的原理
  6. 读取txt文档中的某一行数据
  7. 《道德经》第五十四章
  8. 软件项目管理系统-功能模块
  9. maxim-MAX78000-windows10-wsl2-Ubuntu20.04-pyenv+pytorch+ai8x环境搭建
  10. 基于Unity3D云人脸监测技术