远程访问及控制SSH 服务

2023-05-16

目录

前言

一.SSH概述

二. SSHD服务

2.1 远程登录

2.2 文件传输

三.SSH服务配置

3.1 SSH服务安全调优

3.2 SSH服务验证

四.密钥对构建

4.1 密钥对原理

4.2 远程拷贝–scp

4.2.1 本地文件复制到服务器

4.2.2 复制服务器的文件到本地

4.2.3本地目录复制到服务器

4.3 密钥对配置

4.3.1 在客户端创建密钥对

4.3.2 将公钥文件上传至服务器

五.访问控制–TCP Wrappers

六.总结


前言

传统的网络服务程序如 FTP、POP 和 TELNET 在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有弱点的, 很容易受到 “中间人”(man-in-the-middle)这种方式的攻击。所谓 “中间人” 的攻击方式, 就是 “中间人” 冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被 “中间人” 一转手做了手脚之后,就会出现很严重的问题。通过使用 SSH,你可以把所有传输的数据进行加密,这样 “中间人” 这种攻击方式就不可能实现了,而且 SSH 也能够防止 DNS 欺骗和 IP 欺骗。使用 SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH 有很多功能,它既可以代替 TELNET,又可以为 FTP、POP、甚至 PPP 提供一个安全的 “通道” 。

一.SSH概述

SSH (Secure Shell) 是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建立在应用层和传输层基础上的安全协议。

SSH服务的安全性:
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
SSH服务采用C/S架构,我们常见的SSH客户端有:Putty、 Xshell、 CRT、 MobaXterm、 FinalShell
SSH服务端为:OpenSSH
OpenSSH是实现SSH协议的开源软件项目,适用于各种UNIX、Linux 操作系统。Centos7系统默认已安装openssh相关软件包,并将sshd服务添加为开机自启动。
Openssh服务包
OpenSSH软件包,提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务Telnet 或Ftp。

OpenSSH服务需要4个软件包:
openssh-5.3p1- 114.e16_ _7.x86_ 64            //包含openSSH服务器及客户端需要的核心文件。
openssh-clients-5.3p1-114.el6_ 7.x86_ 64      //OpenSSH客户 端软件包。
openssh-server-5.3p1-114.e16_ 7.x86_ 64       //OpenSSH服 务器软件包。
openssh-askpass-5.3p1-114.e16_ _7.x86_ 64     //支持对话框窗口的显示,是一个基于x系统的

sshd服务默认使用的是TCP的22端口
sshd服务的默认配置文件在: /etc/ssh/下
ssh_ config:客户端的配置文件
sshd_ config :服务器配置文件

二. SSHD服务

ssh服务端主要包括两个服务功能ssh远程链接和sftp服务
作用: SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传送文件。
相比较之前用Telnet 方式来传输文件要安全很多,因为Telnet 使用明文传输,SSH 是加密传输。

2.1 远程登录

-l:指定登录名称。
-P:指定登录端口(当服务端的端口非默认时,需要使用-p指定端口进行登录)

登录方法一:
ssh  远程服务器用户名@远程服务器主机名或IP地址 -p 端口    //默认端口为22,可以不加-p


登录方法二:
ssh -l +远程主机用户名 +远程服务器主机名或IP地址 -p 端口

2.2 文件传输

sftp是安全文件传送协议,可以为传输文件提供一种安全的网络的加密方法。
sftp与ftp有着几乎一样的语法和功能。SFTP 为SSH的其中一部分,其实在SSH软件包中,已经包含了一个叫作SFTP全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作。所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

sftp root@192.168.10.13    //登录到服务器
get    //下载文件
get -r //下载目录
put    //默认会上传到/root
help   //查看sftp可使用的命令和用途
pwd    //显示当前服务器所在位置
lpwd   //显示当前主机位置

三.SSH服务配置

sshd服务器配置文件为:/etc/ssh/sshd_config

3.1 SSH服务安全调优

Port 22                # 监听端口,默认为22,为了安全可以更改为高位端口
ListenAddress 0.0.0.0 #监听地址,如果主机不需要从公网ssh访问,可以把监听地址改为内网地址


UseDNS yes             #DNS反向解析


SyslogFacility AUTHPRIV #用户登录的信息记录的类型为AUTHPRIV,sshd服务日志存放在: /var/log/secure


AllowUsers  zhangao   #只允许zhangao用户通过ssh登入,注:root用户不在名单中,也无法登入


DenyUsers   zhangsan  #拒绝zhangsan用户通过ssh登入;注:DenyUsers与AllowUsers不能同时使用

LoginGraceTime 2m    #登录时间限制2分钟,超时拒绝登录

PermitRootLogin yes   #是否允许root用户登入

MaxAuthTries 6      #每个连接最大允许认证次数,若认证次数超过此数值一半,连接强制断开

PasswordAuthentication yes  #密码验证登录
PermitEmptyPasswords no    #是否允许空密码用户登入
PrintLastLog yes    #显示上次登入信息

3.2 SSH服务验证

sshd服务支持两种验证方式
1.密码验证:
对服务器中本地系统用户的登录名称、密码进行验证。这种方式使用最为简便。
但从客户端角度来看,正在连接的服务器有可能被假冒;
从服务器角度来看,当遭遇密码穷举(暴力破解)攻击时防御能力比较弱。
同时:18位密码复杂性(大写、小写、字符、数字) 端口(1023以上叫做高位端口)
2.密钥对验证:
要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证,大大增强了远程管理的安全性。该方式不易被假冒,且可以免交互登录,在Shell 中被广泛使用。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性要求较高的服务器,建议将密码验证方式禁用,只允许启用密钥对验证方式;若没有特殊要求,则两种方式都可启用。

四.密钥对构建

在非对称加密技术中,有两种密钥,分为私钥和公钥,私钥是密钥对所有者持有,不可公布,公钥是密钥对持有者公布给他人的。
公钥用来给数据加密,用公钥加密的数据只能使用私钥解。

vim/etc/ssh/sshd_config
PubkeyAuthentication yes    #启用密钥对验证
Authori zedKeysFile  .ssh/authorized_ keys  #指定公钥库文件,默认存在“~/,ssh/”

4.1 密钥对原理

首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SsH服务器上连接
的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致,SSH服务器就用公钥加密"质询" ( challenge)并把它发送给SSH客户端。
当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。可根据实际情况设置验证方式。

通俗点讲,就是客户端生成一对密钥,私钥自己保存,公钥发给服务器,当进行连接时,系统验证公钥私钥是否匹配,匹配则验证通过,否则拒绝登入。

4.2 远程拷贝–scp

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,而且scp传输是加密的。

步骤:

4.2.1 本地文件复制到服务器

scp passwd root@192.168.10.19:/opt/

4.2.2 复制服务器的文件到本地

scp root@192.168.10.19:/home/zhangao/ ./

4.2.3本地目录复制到服务器

scp -r kgc13/ root@192.168.10.19:/opt/

4.3 密钥对配置

4.3.1 在客户端创建密钥对

通过ssh-keygen工具为当前用户创建密钥对文件。可用的加密算法为RSA、ECDSA或DSA等( ssh- keygen命令的“-t”选项用于指定算法类型)。

密钥对默认存储位置位:“~/.ssh/”下
id_rsa是私钥文件,权限默认为600;
id_ rsa.pub是 公钥文件,用来提供给ssH服务器

4.3.2 将公钥文件上传至服务器

方法一:ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.10.13
此方法可直接在“~/.ssh/”目录下生成authorized_ keys文件

方法二:使用scp命令

scp ~/ .ssh/id_rsa.pub root@192.168.10.13:/opt  #远程复制到服务器
cp /opt/id_rsa.pub ~/.ssh/authorized_keys      #更改公钥文件  

scp ~/.ssh/id_rsa.pub root@192.168.10.13:~/.ssh/authorized_keys #一条命令 

五.访问控制–TCP Wrappers

在Linux 系统中,许多网络服务针对客户端提供了访问控制机制,如Samba、 BIND、HTTPD、 OpenSsh 等TCP Wrappers 将TCP服务程序“包裹"起来,代为监听TCP服务程序的端口,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。

[root@kgc .ssh]# rpm -q tcp_wrappers
tcp_wrappers-7.6-77.el7.x86_64        #系统默认安装

tcp_wrappers 保护机制的两种实现方式:
1.直接使用tcpd程序对其他服务程序进行保护,需要运行tcpd程序。
2.由其他网络服务程序调用libwrap.so.* 链接库,不需要运行tcpd程序。此方式的应用更加广泛,也更有效率。
使用ldd命令可以查看程序的链接库

语法格式: <服务程序列表>: <客户端地址列表>
(1)服务程序列表
ALL:代表所有的服务。
单个服务程序:如“vsftpd" .
多个服务程序组成的列表:如“vsftpd,sshd"。 .
(2)客户端地址列表
ALL:代表任何客户端地址。
LOCAL:代表本机地址。多个地址以逗号分隔
允许使用通配符*"和"?”,前者代表任意长度字符,后者仅代表一个字符
网段地址,如"192.168.10." 或者192.168.10.0/255.255.255.0
区域地址,如”. zhangao.com"匹配zhangao.com域中的所有主机。

访问控制的基本原则:
首先检查/etc/hosts.allow 文件,如果找到相匹配的策略,则允许访问;否则继续检查/etc/hosts.deny文件,如果找到相匹配的策略,则拒绝访问;如果检查上述两个文件都找不到相匹配的策略,则允许访问。
“允许所有,拒绝个别”
只需在/etc/hosts.deny文件中添加相应的拒绝策略
“允许个别,拒绝所有
除了在/etc/hosts .allow中添加允许策略之外,还需要在/etc/hosts.deny文件中设置"ALL:ALL"的拒绝策略。

比如:只允许 IP 地址为 10.0.0.1 的主机或者位于 192.168.10.0/24 网段的主机访问 sshd 服务,其它地址全部拒绝,需要同时改两个文件
vim /etc/hosts.allow

vim /etc/host.deny

六.总结

1.sshd服务数据传输是加密的,可以防止信息泄漏,数据传输是压缩的,可以提高传输速度
2.ssh服务有远程链接和sftp服务
3.ssh服务中的sftp传输数据比ftp更加安全可靠
4.密钥对为客户机生成并发送给服务器
5.tcp_wrappers可以有效的控制某些地址的用户访问是否可以访问一些服务
6.scp可以在两天linux主机间远程传输文件
7.密钥对比密码验证更加安全可靠
 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

远程访问及控制SSH 服务 的相关文章

随机推荐

  • Linux防火墙——iptables以及firewalld的使用介绍

    本文基于Linux上CentOS 7版本配合iptables iptables services firewalld等服务进行演示 一 防火墙概念以及Netfilter机制介绍 1 概念 2 防火墙两大类型 3 Netfilter功能 二
  • AOP是什么?如何使用AOP?

    AOP 基本概念是什么 xff1f 什么是AOP xff1f AOP 就是面向切面编程 xff0c 或者叫面向方面编程 xff0c 或者开玩笑的说叫面向方便面编程 在软件业 xff0c AOP为Aspect Oriented Program
  • 情人节浪漫表白,程序员的专属浪漫-----烟花表白

    谁说程序员不懂浪漫 xff1f for birth death love 43 43 do love 43 43 while death 可执行的exe文件我放在文章后面了 xff01 直接双击点开就可以使用了 最终效果 xff1a 运行环
  • 养老产业政策链接

    江西省养老政策文件 xff1a 江西省养老服务条例 http mzw ganzhou gov cn gzsmzjy c103172 202201 d238525b35bb47b49b3de312c9b63a60 shtml 南昌市养老服务体
  • 生产消费模型详解以及代码实现(Java)

    生产消费模型的由来以及定义 xff1a 生产消费者模型是程序设计当中一种非常常见的设计模式 xff0c 被广泛应用于消息队列以及其他的一些场景当中 xff0c xff0c 生产消费模型其中包括三者 xff08 生产者 xff0c 消费者 x
  • java业务代码发送http请求(Post方式:请求参数为JSON格式;Get方式)

    实际开发中 xff0c 可能需要发送http请求到第三方服务获取数据 xff0c 于是就有以下应用 xff1a 依赖 xff1a lt dependency gt lt groupId gt com alibaba lt groupId g
  • IDEA打开终端报错Cannot open Local Terminal命令行功能

    项目场景 xff1a idea项目中不能打开命令行功能 IDEA打开终端报错Cannot open Local Terminal 意思是打开命令行发生错误 idea上配置shell终端 xff0c 命令行页面 问题描述 打开IDEA后 xf
  • 【Linux系统无法连接网络,修改IP地址和网关,ping解决主机不可达的情况】

    文章目录 配置网络 修改状态配置网络 IP地址配置VirtualBox网络修改IP地址修改DNS重启服务的方法修改netplan文件的配置 Ubuntu出现无法连接网络 xff0c ping公网IP地址显示主机不可达 xff0c 打开Fir
  • @vue/eslint-config-standard@6.1.0 from root project

    什么都安装好了 xff0c 但是每次npm i 都报错 xff0c 后来查了资料发现是自己的npm 版本太高 xff0c 切换一下就好了 如下代码 运行后再重新 npm i npm install npm 64 6 14 15 g
  • C++之生产者和消费者模型分析(条件变量)

    先看一下生产者消费者模型 概述 xff1a 生产者把需要处理的数据放到缓存队列中并向消费者发出信号 xff0c 然后消费者把数据拿出来处理 xff0c 这里生产者可以是单线程或者多线程 xff0c 而消费者一般是多线程 xff0c 消费者线
  • 小米(MIUI)ROOT线刷教程

    一 解锁BL锁 1 不论是root还是刷入第三方或外版的rom都需要解锁bl锁 这是最重要的一点 首先打开手机设置 xff0c 登录或注册你的小米账户 xff0c 点击 我的设备 下拉找到 全部参数 进入找到 MIUI版本 连续点击7下打开
  • SpringMVC处理请求流程

    1 用户先发送请求 xff0c 请求被springMvc前端控制器捕获 2 前端控制器对请求URL解析获取请求URL xff0c 根据URL xff0c 调用HandlerMapping 3 前端控制器获得返回的HandlerExecuti
  • C语言(选择结构程序设计)4道例题答案

    1 xff0c include lt stdio h gt include lt math h gt int main float x printf 34 输入x的值是 xff1a n 34 scanf 34 f 34 amp x if x
  • C++ 图论之求图的连通块数量

    1 连通块的定义 块内每个点之间都有一条路径 2 思路 我们可以用dfs深度优先搜索 xff1a 从一个点出发遍历图将遍历过的点全部标记 xff0c 标记过的点则不会再遍历到 再写一个循环枚举所有的点 xff08 枚举起点 xff09 xf
  • 我花1200大洋所学的“元学习课”究竟学了些什么?

    我花1200大洋所学的 元学习课 究竟学了些什么 xff1f 讲课的是台湾的一位大牛名叫Xdite xff0c 以及亿万富豪李笑来 能够跟牛人学习怎么学习我想应该不会有错吧 xff0c 对我来说这次做的应该是一次正确的决定 xff0c 所谓
  • Javaer都在用的Java后端面试笔记, 涵盖90%的主流技术,啃完分分钟拿下大厂offer!!

    到底该如何准备高级开发 架构师级别的面试 xff1f 为了帮助有需要的朋友在金九银十面试 xff0c 最近整理了一份面试知识点笔记复习资料 xff0c 内容包含 xff1a JVM xff0c JAVA多线程并发 xff0c Spring
  • 八种排序算法和耗时

    读取文件big a txt的数据 xff08 包含500000个随机数 xff0c 1 5000000 xff09 xff0c 利用插入排序 希尔排序 xff0c 冒泡排序 快速排序 选择排序 堆排序 xff0c 归并排序 基数排序8种排序
  • Centos7.x升级内核

    文章目录 引言安装elrepo并修改为默认从清华源下载查看可用内核安装包 更新内核卸载多余的内核安装稍微没那么新版本的内核 引言 默认情况下Centos7 9的内核是3 10 xff0c 咱们给他升级一下 span class token
  • 自动化测试工具——Selenium详解

    目录 前言 Selenium的几个特点 seleniun组成部分 selenium RC selenium IDE selenium Grid selenium webDriver 那么selenium RC 与webdriver 主要有什
  • 远程访问及控制SSH 服务

    目录 前言 一 SSH概述 二 SSHD服务 2 1 远程登录 2 2 文件传输 三 SSH服务配置 3 1 SSH服务安全调优 3 2 SSH服务验证 四 密钥对构建 4 1 密钥对原理 4 2 远程拷贝 scp 4 2 1 本地文件复制