文章目录

  • Linux中怎么搭建SSH远程连接服务器
    • 一、远程连接服务器:
      • 1、什么是远程连接服务器:
      • 2、远程连接服务器的功能
      • 3、常见的几种远程管理工具方式:
    • 二、SSH连接加密技术:
      • 1、非对称密钥加密:
      • 2、对称密钥加密:
      • 3、密钥技术证书:
        • (1)什么是证书:
        • (2)CA(证书颁发机构):
        • (3)证书发放过程:
    • 三、SSH远程连接验证方式
      • 1、基于口令的安全验证:
      • 2、基于密钥的安全验证:
    • 四、了解SSH配置:
      • 1、检查SSH包的安装:
      • 2、sshd_config配置注解:
      • 3、修改配置文件:
    • 五、搭建SSH服务:
      • 1、基于口令的SSH登录:
      • 2、两台虚拟机之间实现SSH互信,免登录:
      • 3、通过Xshell使用证书进行登录:

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

一、远程连接服务器:

1、什么是远程连接服务器:

远程连接服务器通过文字或图形接口方式来远程登陆系统,使我们可以在远程终端登陆Linux主机以取得操作主机接口的权限。
SSH建立在应用层基础上的安全协议,该协议目前较可靠,专为远程登陆会话和其他网络服务提供安全性的协议,它可以有效地防止远程管理过程中的信息泄露问题。

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

(1)分享主机运算能力
(2)服务器类型有限度开放连接
(3)工作站类型,只对内网开放

3、常见的几种远程管理工具方式:

协议 注解
RDP windows远程桌面管理图形界面
telenet CLI界面下远程管理,几乎所有操作系统都有(内容明文传输)
ssh CLI界面下的远程管理,几乎所有操作系统都有(内容加密传输)
RFB 图形化远程管理协议 VNC使用的协议

二、SSH连接加密技术:

1、非对称密钥加密:

非对称加密为数据的加密解密提供了一个非常安全的方法,它使用了两把钥匙分别是公钥和私钥。私钥只能由一方安全保管,不可外泄,公钥可以发给任何请求需要的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。

2、对称密钥加密:

发送方和接收方用一个相同的密钥去加密和解密数据。

3、密钥技术证书:

PFX标准: 公钥加密技术12号标准,它为存储和传输用户或服务器私钥、公钥以及证书指定了一个可移植的格式。它是一种二进制格式的文件,也称作PFX文件。该证书包含了私钥和公钥,从该证书导出私钥的时候,是需要输入密码的。因此即使别人获取了你的证书,他无法知道提取私钥所需的密码,还是很安全的。
CER: 用于存储公钥证书的文件格式。该证书只包含公钥,类似于访问某些基于https协议传输的网站,该网站的公钥是公开的,它会通过cer这种证书格式发送给客户端。
RSA: 一种非对称密码算法。

(1)什么是证书:

证书说白了就是证明身份,是为了保证访问的人就是你要访问的人。它保证了密钥的合法性,将公钥与拥有对应私钥的主体标识信息捆绑在一起。
证书的格式遵循由国际电信联盟制定的X.509标准

X.509证书包含信息
1、使用者的公钥值
2、使用者的标识信息(如名称或电子邮件)
3、证书的有效时间
4、颁发者的标识信息
5、颁发者的数字签名

证书常用于web服务器身份验证、web用户身份验证、安全电子邮件、Internet协议安全。它是由权威公正的第三方机构CA签发。

(2)CA(证书颁发机构):

CA(Certificate Authority,证书颁发机构):它的核心功能是颁发与管理数字证书,除此之外,它更承担了公钥体系中公钥的合法性检验的责任。

CA的作用包含以下几点
1、处理证书申请
2、鉴定申请者是否有资格接收证书
3、证书的发放、更新
4、接收最终用户数字证书的查询、撤销
5、产生和发布证书吊销列表
6、数字证书、密钥和历史数据的归档

(3)证书发放过程:


图中RA为注册中心,CA为认证中心。注册中心可以有很多个,它负责审核证书申请者的真实身份。当有用户需要申请证书的时候:首先先向注册中心RA提出申请,RA收到后核实该用户是否符合受理;如果符合那么RA会向CA申请,CA收到后会将证书传给RA,最后由RA将证书传给用户。

三、SSH远程连接验证方式

SSH远程连接验证方式有两种,一种基于口令验证,但不太安全。因此有了第二种基于密钥进行安全验证。

1、基于口令的安全验证:

这个只需要你拥有自己的账号和口令,就可以远程登陆到主机。虽然所有传输的数据都会被加密,但是不能保证你登陆的服务器就是你想登陆的。这很有可能会有别的服务器冒充真正的服务器,不安全。

2、基于密钥的安全验证:

这种就相对比较安全,它依靠的是非对称加密算法传输密钥的。

SSH连接过程:
首先:客户端向服务端发起三次握手,建立连接
1、首先服务端会通过非对称加密,产生一个公钥和私钥
客户端服务端之间开始协商:算法、版本信息,为密钥交换做准备:
2、客户端向服务端发送协议版本、自己支持的加密算法、一个随机数(明文)
3、服务端收到后,选取加密算法然后告诉客户端,除此之外还包含:自己的证书(证书中包含公钥)、一个随机数(明文)
4、客户端验证服务端的证书:验证通过后生成另一个随机数(密文),并用证书中的公钥加密该数,发送给服务端
6、服务端通过自己的私钥解密获得这串随机数
7、之后双方根据约定好的加密算法对上边的三个随机数进行加密,得到一个会话密钥,接下来的通信就用这个会话密钥做对称加密。

如果用图片表示就是这样:

四、了解SSH配置:

1、检查SSH包的安装:

默认都是安装好的,保险起见,我们检查一下。使用rpm -qf 查看该服务是否安装,发现已经安装。使用rpm -ql 查看该SSH包安装后都释放了哪些文件,我们从中可以看到有关SSH服务端的配置文件在 /etc/ssh/sshd_config 中,除此之外,在该文件的同目录中,还有ssh_config这个文件也是有关SSH配置的,但是该文件是属于客户端的配置文件。

2、sshd_config配置注解:

vim /etc/ssh/sshd_config(节选,开头数字表示行数)
17 #Port 22
18 #AddressFamily any
19 #ListenAddress 0.0.0.0
20 #ListenAddress ::
22 HostKey /etc/ssh/ssh_host_rsa_key
23 #HostKey /etc/ssh/ssh_host_dsa_key
24 HostKey /etc/ssh/ssh_host_ecdsa_key
25 HostKey /etc/ssh/ssh_host_ed25519_key
37 #LoginGraceTime 2m
38 #PermitRootLogin yes
39 #StrictModes yes
40 #MaxAuthTries 6
41 #MaxSessions 10
43 #PubkeyAuthentication yes
47 AuthorizedKeysFile      .ssh/authorized_keys
65 PasswordAuthentication yes
69 ChallengeResponseAuthentication no
71 # Kerberos options
115 #UseDNS yes
133 Subsystem       sftp    /usr/libexec/openssh/sftp-server

17默认监听端口为22端口
18IPV4和IPV6协议家族支持哪个,any表示二者均支持
19指明监听的地址,0.0.0.0表示本机的所有地址都可以被登陆
20指明监听的IPV6的所有地址格式,::表示支持本地所有
22默认rsa私钥认证
23支持dsa私钥认证
24支持ecdsa私钥认证
25支持ed25519私钥认证
37登录的宽限时间为2分钟,默认2分钟没有输入密码,则自动断开连接
38是否允许管理员直接登录,yes表示允许
39是否让sshd去检查用户主目录或相关文件的权限数据,yes表示允许
40最大认证尝试次数,6表示最多只有6次机会。继续输错之后需要等待时间才能再次输入密码
41允许的最大会话数,10表示最多开启10个会话
43公钥认证,开启
47服务器识别公钥时,会匹配 .ssh/名为authorized_keys文件,然后将公钥发给客户端,因此我们需要把有关公钥的文件名字改为这个名字。
65是否允许支持基于口令的认证,是
69是否允许任何的密码认证,否
71是否支持kerberos(基于第三方的认证,如LDAP)认证的方式,默认为no
115是否开启DNS,是(关闭的话可以在连接服务端时更快一些)
113默认验证信息基于SFTP传输,如果在该段文字前加上“#”则不支持SFTP连接
注:
以上#开头的英文行,表示系统默认执行的,如果要修改建议不要删除原有文字,去掉#另写一行自己需要的配置则原默认的不再生效。

3、修改配置文件:

(1)17行修改端口号为2222后,登录的格式为ssh 192.168.112.132 2222(注意IP和端口号之间没有“:”是空格),命令如下,修改之后重启服务。让防火墙允许,回车显示成功(如果防火墙关闭就没必要写这些)。添加自定义端口到服务,之后回车没有错误,但如果提示 ValueError: Port tcp/4444 already defined 没关系,我们可以再换一个端口试试。

(2)38行配置不允许管理员登录的话,即使管理员输入正确的密码也无法登录,因此可以设定特定的用户可以登录。
(3)65行修改密码认证改为no,我们新建对话:此时就需要调用证书进行连接会话

(4)可以在配置文件中加入 AllowUsers A B C 一行,可以让特定的用户SSH登录,其他的用户无法登录。
其中,A、B、C表示为允许登录的账号,多个用户之间用空格隔开。

五、搭建SSH服务:

说明本次实验环境为VMware-workstation-full-14.0的两台虚拟机,服务端的名字是Server,客户端的名字是Client。加载的镜像文件是rhel-server-7.5-x86_64-dvd,且两台虚拟机之间均使用同一种网卡配置,本实验所采用的是网卡模式为NAT模式。

1、基于口令的SSH登录:

首先我们用Xshell分别连接两台虚拟机,一台模拟服务端,一台模拟客户端。
输入指令 ssh root@192.168.112.132 -p 22 ,之后输入服务端的密码,然后成功远程登录。如下:

2、两台虚拟机之间实现SSH互信,免登录:

该实验证明的是不通过口令登录即可实现远程连接。但由于对端要有本端的公钥,因此在传输的时候,我们是先用口令传输公钥给对端,对端收到后,再关闭基于口令的远程登录。最后再测试双方拿着对端的公钥,在用口令登录的方式没有的时候,看是否能实现登录。
(1)首先在任意一台虚拟机上创建密钥对:使用命令 ssh-keygen -t rsa
① ssh-keygen表示生成、管理和转换认证密钥,-t rsa指定算法类型为rsa。
②密钥所在位置为 /root/.ssh/ 中,密钥的文件名叫做 id_rsa
(2)输入密码,默认为空。由于我们直接基于钥匙来认证,这里直接回车,不设置密码。
(3)于上一步骤一致:回车。最后基于RSA算法随机生成长度为2048的密钥图片。

(4)此时我们使用命令:ll /root/.ssh/ 查看到存放密钥的目录,发现有两把钥匙,公钥和私钥。

(5)然后我们将公钥发给另一台虚拟机Client,使用命令: scp /root/.ssh/id_rsa.pub root@192.168.112.129:/root/.ssh/authorized_keys 将该公钥文件发送到另一台虚拟机的指定目录,并取名为 authorized_keys 这是由于配置文件只识别该文件作为公钥文件。如果原来的文件名不改,则会提示权限被拒绝。
之后它会提示无法确定主机的真实性,问你是否需要继续连接。我们输入yes后,它会要求输入对端口令,我们输入后便成功将公钥给了另一台虚拟机。
(6)我们修改配置文件 vim /etc/ssh/sshd_config ,将65行的yes改为no:PasswordAuthentication no。最后我们检测直接登录对端,发现没有输入口令,直接登录进去。

(7)以上就实现了SSH单方面信任,然后我们回头看,会在.ssh/下又多了一个文件,该文件记录了与谁之间的信任,如果删除该文件,还需要重新进行连接。只要对端有自己的公钥就没有关系,输入yes后,继续连接也可以,并没有输入密码。除此之外,还要说明的是这里只将Server的公钥给了Client,但是Client并没有把公钥给Server,因此Server能免密登录Client,而Client不能实现免密登录Server。要实现互信,双方都需要有对方的公钥,这里不再做演示。

3、通过Xshell使用证书进行登录:

本次实验与之前实验无关,如果不想恢复快照,请删除/root/.ssh下的所有文件,该实验仅需要一台虚拟机即可。思路与之前一致,先打开密码认证并传输私钥至windows,然后关闭密码认证,使用私钥证书进行登录。
(1)首先保证虚拟机上开启基于密码的认证: vim /etc/ssh/sshd_config
65行:PasswordAuthentication yes
(2)紧接着创建密钥对:使用命令: ssh-keygen -t rsa -b 4096 指定类型为rsa,指定大小为4096。然后回车回车。

(3)创建密钥对好后,我们使用命令将公钥文件名进行重命名为服务可识别的公钥名字。

(4)切换到/root/.ssh目录 点击Xshell文件传输图标,双击私钥文件id_rsa,此时文件已被传输至windows桌面。紧接着我们关闭密码登录,重启服务后准备检测。

(5)检测:我们新建一个对话窗口,然后点击浏览,选择文件为私钥文件,最后点击确认。我们便成功发现已经登录进来。

但是我们发现传输私钥是一种很不安全的行为,对此xshell将私钥通过加密算法为公钥,这样使得密钥传输变得更安全。
点击工具,然后用户密钥管理者。

然后导入选中密钥文件,紧接着点击生成公钥。

选择公钥类型为rsa类型,长度自己选。然后下一步。


密码跳过,我们就不再设置了。


看到以下画面时,说明该私钥文件转换为的公钥文件已经好了。

之后再把这个文件移动到虚拟机里面,同样命名为authorized_keys。当下次需要登录时,我们将证书文件选择为刚才生成的id_rsa_1024这个密钥(注意点击浏览后选择用户密钥,不是文件。这里已经基于私钥文件生成了一个公钥)确认,便成功登录。

Linux中怎么搭建SSH远程连接服务器相关推荐

  1. 解决Linux pppd不能使用ssh远程连接服务器

    有一台外网服务器使用pppd搭建了vpn服务器,想使用ssh连接其他服务器时,连接不上: 查询后,发现问题是没有开启IPv4端口转发 编辑 /etc/sysctl.conf,设置 net.ipv4.i ...

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

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

  3. 远程连接Kali Linux使用PuTTY实现SSH远程连接

    远程连接Kali Linux使用PuTTY实现SSH远程连接 本书主要以在Android设备上安装的Kali Linux操作系统为主,介绍基于Bash Shell渗透测试.由于在默认情况下,在Andr ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
  2. mysql 基于c_linux-基于MYSQL的C程序实践
  3. @EnableAsync @Async 的详解
  4. Java虚拟机:class类文件结构
  5. mysql 8安装_mysql安装过程详解
  6. numpy 创建数组
  7. 关于vue自定义事件中,传递参数的一点理解
  8. 传统词向量nlp处理的优缺点_吴恩达深度学习笔记(126) | NLP | GloVe 词向量
  9. R语言文本分析|利用jiebaR进行分词与词频统计
  10. kettle数据脱敏
  11. Python抓取行政区域划分存入MySQL数据库
  12. 用redis统计页面的访问量
  13. 华氏温度转换为摄氏温度
  14. 用 Python 播放多声轨 MIDI 文件音乐
  15. <nav>导航标签 和div标签一样,块属性标签</nav>    <main>内容区域,和section没有区别</main>    <section>内容区域,和main没有区别</sect
  16. 常用增强学习实验环境 II (ViZDoom, Roboschool, TensorFlow Agents, ELF, Coach等)
  17. echarts图表折线图柱状图多个X轴Y轴以及一个Y轴反向
  18. 数据结构与算法A 查找
  19. 易语言连接mysql学习_[易语言]连接MYSQL数据库学习
  20. JQ----移动端h5页面通过地址调起通讯录以及高德地图、百度地图定位导航

热门文章

  1. 微信小程序开发之——flex布局
  2. 兵马俑上我的文章(好久没来这个版(love版)逛了。想来看看。)
  3. 计算机双击程序名字是否重命名,鼠标双击文件打不开或变成文件重命名解决方法...
  4. Redis数据结构-跳跃表
  5. web开发后台开发,学习CSS行内样式
  6. 有关SEI 补充增强信息
  7. OpenCV3.0中 Mat和IplImage相互转换
  8. 非虚拟机环境下Ubuntu配置
  9. linux7 initrd,initrd文件系统介绍
  10. 炫彩界面库-模仿360安全卫士8.8,支持透明,换肤