linux基本服务之sshd

2023-05-16

这段时间在学习linux常用服务,这里将学习内容以及自己的实验心得记录下来,在自己忘记的时候也好复习


实验环境: centos 6.7 64bit


1. 简介

SSHD服务

  • 介绍:SSH协议:安全外壳协议。为 Secure Shell 的缩写。SSH 为建立在应用层和传输层基础上的安全协议。
  • 作用:sshd服务使用SSH协议可以用来进行远程控制, 或在计算机之间传送文件
    相比较之前用telnet方式来传输文件要安全很多,因为telnet使用明文传输,是加密传输

2.安装服务

安装服务需要安装 Openssh四个安装包,分别为

  • openssh-5.3p1-114.el6_7.x86_64:包含OpenSSH服务器及客户端需要的核心文件
  • openssh-clients-5.3p1-114.el6_7.x86_64:OpenSSH客户端软件包
  • openssh-server-5.3p1-114.el6_7.x86_64:OpenSSH服务器软件包
  • openssh-askpass-5.3p1-114.el6_7.x86_64:支持对话框窗口的显示,是一个基于X 系统的密码诊断工具

2.1 安装方法

  • 如果配置好了yum源1,直接使用命令
 yum -y install openssh openssh-clients openssh-server
  • 直接从光盘文件安装rpm包文件
rpm -ivh /media/cdrom/Packages/openssh*.rpm

注意:这种方法比较不推荐,因为检查依赖过程中可能需要安装其他的包,比较麻烦,基本就是缺啥装啥。

2.2 检查

rpm -qa |grep openssh

确认上面提到的四个包已经安装

openssh-askpass-5.3p1-114.el6_7.x86_64
openssh-clients-5.3p1-114.el6_7.x86_64
openssh-5.3p1-114.el6_7.x86_64
openssh-server-5.3p1-114.el6_7.x86_64

sshd服务的主要配置文件为/etc/ssh/ssh_config(客户端配置)和/etc/ssh/sshd_config(服务端配置)

2.3 设置开机启动

chkconfig sshd on
chkconfig --list sshd

检查结果:

ssh 0:off 1:off 2:on 3:on 4:on 5:on 6:off

3. ssh使用

  • format
    ssh [username]@[remote_server_name or IP_address]
  • examples
ssh 192.168.3.14
ssh root@192.168.3.14
# 创建witness用户并添加密码123456
useradd witness&&echo 123456 | passwd --stdin witness
ssh witness@192.168.3.14
# 一种不常用的方法
ssh -l wintess 192.168.3.14

在首次登陆某个主机时系统没有保存远程主机的信息,为了确认该主机身份会提示用户是否继续连接,输入YES后密码登陆。
此时$HOME/.ssh/known_hosts文件中会存入该远程主机的信息,下次登陆就不会有提示。
root用户可直接cat /root/.ssh/known_hosts查看记录的信息。

RSA算法基于一个十分强大的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却是极其困难,因此可以将乘积公开作为加密密钥。

4. sshd服务配置与管理

对应配置文件为/etc/ssh/sshd_config,
参数前面有#代表默认值和注释


4.1 基本参数

  • 参数Port 22
#默认22端口
#Port 22 
#要修改端口为222 加一行
Port 222
#然后重启sshd服务
# 查看监听端口
[root@witness14 ssh]# netstat -tlunp | grep sshd
# 结果
[root@witness14 ssh]# netstat -tlunp | grep sshd
tcp        0      0 0.0.0.0:222                  0.0.0.0:*                   LISTEN      3250/sshd           
tcp        0      0 127.0.0.1:6010              0.0.0.0:*                   LISTEN      3124/sshd           
tcp        0      0 127.0.0.1:6011              0.0.0.0:*                   LISTEN      3255/sshd           
tcp        0      0 :::222                       :::*                        LISTEN      3250/sshd           
tcp        0      0 ::1:6010                    :::*                        LISTEN      3124/sshd           
tcp        0      0 ::1:6011                    :::*                        LISTEN      3255/sshd

修改端口后登陆方法:ssh -p 222 witness@192.168.3.14


  • 参数Protocol 2

    选择的 SSH 协议版本,可以是 1 也可以是 2 ,CentOS 5.x 预设是仅支持 V2。
    安全考虑,设置为最新的协议版本。

  • 参数HostKey /etc/ssh/ssh_host_key

    设置包含计算机私人密匙的文件,删除后ssh无法登陆,重启服务会自动生成。

  • 参数SyslogFacility AUTHPRIV
    当用户使用ssh登入系统的时候,ssh会记录这个信息,类型为AUTHPRIV
[root@witness14 ssh]# cat /etc/rsyslog.conf |grep authpriv --color
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
# The authpriv file has restricted access.
authpriv.*                                          /var/log/secure
可见sshd服务的日志位置在`/var/log/secure`
  • 参数LogLevel INFO
    登陆记录的等级为 INFO 级别及以上

4.2 安全调优重要参数

  • 参数LoginGraceTime 2m

    从连接上ssh server 到输入密码进入的时间,如果这段时间没成功登陆,就会断开,无单位默认为秒

  • 参数PermitRootLogin yes

    是否允许root登陆,默认为yes,但实际生产中是禁止root登陆的。

  • 参数PasswordAuthentication yes

    是否需要密码验证,实际生产中有时候设置为no,通过认证密钥登陆

  • 参数PermitEmptyPasswords no

    是否允许以空密码登陆,默认不行

  • 参数PrintMotd yes

    登入后是否显示一些信息,手动编辑/etc/motd实现,打印该文件内容

  • 参数PrintLastLog yes

    显示上次登陆的信息,默认也是 yes

  • 参数UseDNS yes

    通常来说,为了判断客户端来源是否合法,会通过DNS反查客户端主机名
    但如果在内网互连,这个选项设置为no能加快登陆速度

4.3 sshd防暴力破解


  • method1

  • 密码足够复杂
  • 修改默认端口号
  • 不允许root账号直接登陆,添加普通账号赋予一些权限
  • 不允许密码登陆,只能通过认证密钥来登陆系统

# 通过密钥认证实现ssh登陆
# 1.生成密钥,过程一路回车默认即可
[root@witness14 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f3:fc:52:0e:4d:74:17:4b:2a:f8:60:94:0b:de:19:07 root@witness14
The key's randomart image is:
+--[ RSA 2048]----+
|         Eo    o.|
|       ..o... + o|
|      . o+=o o o |
|       ..+o o    |
|        S  +     |
|         +. o    |
|          o+     |
|          ...    |
|           ..    |
+-----------------+
# 2.将公钥拷贝到服务器上

[root@witness14 ~]# ssh-copy-id -i root@192.168.3.13
The authenticity of host '192.168.3.13(192.168.3.13)' can't be established.
RSA key fingerprint is d9:17:d7:db:38:7c:e8:56:9c:4b:7e:00:7f:9e:1c:74.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.64' (RSA) to the list of known hosts.
root@192.168.0.64's password: 
Now try logging into the machine, with "ssh '192.168.3.13'", and check in:

  .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting
# 此时已经能够直接登陆13服务器了


  • method2

通过第三方软件开源 fail2ban—-> 官网
#安装
yum -y install fail2ban

主要配置文件说明

  • /etc/fail2ban/action.d #动作文件夹,内含默认文件。iptables以及mail等动作配置
  • /etc/fail2ban/fail2ban.conf #定义了fai2ban日志级别、日志位置及sock文件位置
  • /etc/fail2ban/filter.d #条件文件夹,内含默认文件。过滤日志关键内容设置
  • /etc/fail2ban/jail.conf #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值

如果是源码安装,需要让其开机自启动则需要在源码目录执行

cp files/redhat-initd /etc/init.d/fail2ban
chkconfig --add fail2ban  #开机自动启动

应用实例:
设置条件:ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,用户可重新登录。
因为动作文件(action.d/iptables.conf)以及日志匹配条件文件(filter.d/sshd.conf )安装后是默认存在的。基本不用做任何修改。所有主要需要设置的就只有jail.conf文件。启用sshd服务的日志分析,指定动作阀值即可。
实例文件/etc/fail2ban/jail.conf及说明如下:

[DEFAULT]               #全局设置
ignoreip = 127.0.0.1/8       #忽略的IP列表,不受设置限制
bantime  = 600             #屏蔽时间,单位:秒
findtime  = 600             #这个时间段内超过规定次数会被ban掉
maxretry = 3                #最大尝试次数
backend = auto            #日志修改检测机制(gamin、polling和auto这三种)

[ssh-iptables]               #单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。
enabled  = true             #是否激活此项(true/false)修改成 true
filter   = sshd              #过滤规则filter的名字,对应filter.d目录下的sshd.conf
action   = iptables[name=SSH, port=ssh, protocol=tcp]             #动作的相关参数,对应action.d/iptables.conf文件
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.c
om, sendername="Fail2Ban"]#触发报警的收件人
logpath  = /var/log/secure   #检测的系统的登陆日志文件。这里要写sshd服务日志文件。 默认为logpath  = /var/log/sshd.log
#5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下
bantime  = 3600   #禁止用户IP访问主机1小时
findtime  = 300    #在5分钟内内出现规定次数就开始工作
maxretry = 3    #3次密码验证失败

执行iptables -L -n会多出一条规则链,故意输错几次也能看到被禁用的提示。
执行fail2ban-client status检测fail2ban是否正常工作

Status
|- Number of jail:  1
`- Jail list:       ssh-iptables

执行fail2ban-client status ssh-iptables可以看到禁用IP

fail2ban-client status ssh-iptables
Status for the jail: ssh-iptables
|- filter
|  |- File list:    /var/log/secure 
|  |- Currently failed: 0
|  `- Total failed: 3
`- action
   |- Currently banned: 1
   |  `- IP list:   192.168.3.13 
   `- Total banned: 1

日志消息存放在/var/log/fail2ban.log

  • fail2ban实际上通过检查指定日志/var/log/secure 来确定禁用名单的,如果想立即解禁,清空/var/log/secure并重启fail2ban即可
  • 后期如果清空或者重启iptables,也需要重启fail2ban
  • 修改ssh端口后需要修改 /etc/fail2ban/jail.conf/etc/fail2ban/action.d/iptables.conf
# 例如端口修改为222
# jail.conf
[ssh-iptables] 
...              
action   = iptables[name=SSH, port=222, protocol=tcp]
...

# iptables.conf

#port = ssh
#改为
port = 222  

#都修改完之后重启服务即可           

4.4 自定义脚本防止暴力破解

输错密码累计十次永久拉黑


  1. centos6网络yum源安装方法:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux基本服务之sshd 的相关文章

  • ROS - 用POSE展示方向或向量 vector - pose

    昨天想在rviz里用pose表示一个vector xff0c 搞了半天 Pose的属性 xff0c point是起点 xff0c orientation是表示由坐标系原点将 1 0 0 这个向量旋转到想要显示的方向所需的旋转的四元数表示 假
  • 目录导读

    SLAM基础 xff1a SLAM基础 xff1a 计算相机运动 SLAM基础 xff1a 单目初始化问题 SLAM基础 xff1a 计算相机运动 3D 2D SLAM基础 xff1a 计算相机运动 3D 3D SLAM基础 xff1a I
  • 特定标志检测算法流程-棋盘格

    ROS标定工具是采用棋盘格 xff0c 具体实现是OPENCV 将输入图像降采样到大约VGA分辨率 xff0c 并在全尺寸图像中检测校准目标角点 结合这些明显正交的职责作为一个优化 棋盘式检测在大图像上太昂贵 xff0c 所以最好在较小的显
  • 无人驾驶——激光雷达篇

    激光雷达技术简介 无人驾驶技术是多项技术的集成 xff0c 包括传感器 定位与深度学习 高精地图 路径规划 障碍物检测与规避 机械控制 系统集成与优化 能耗与散热管理等 无人车系统的感知端由不同的传感器组成 xff0c 其中包括GPS xf
  • simulink搭建简单的陷波滤波器

    simulink搭建简单的陷波滤波器 陷波滤波器的设计模型的搭建通过matlab自带软件设计的滤波器与simulink自带滤波器模块对比 陷波滤波器的设计 具体设计方法可参见这篇 xff1a 算法学习笔记之50HZ陷波滤波器设计 下面给出各
  • docker——常用指令

    docker pull url 从url拉取容器 docker run d url 后台运行镜像 xff0c 如果不存在该镜像 xff0c 则会自动下载 docker exec it 容器id bash 进入镜像容器 xff0c 容器的id
  • Realsense、kinect在ROS环境下的骨骼识别(基于NuiTrack)

    ps 出售我购买的nuitrack liecense xff0c 支持月付 在弄不明白ROS Kinectic之后的openNI之后终于还是向Nuitrack骨骼识别屈服了 xff1a 那么先看看NuiTrack是啥 xff1a https
  • 深度图像帧差法处理以及CV16UC1深度图像的存储方式

    最近为了拾取桌面上的任务目标 xff0c 采用了实时图像与背景图像相减的方法来进行 xff0c 因为采用彩色图像相减会有影子的干扰 xff0c 所以采用了深度图像 但是深度图像的Mat是CV16UC1格式的 矩阵内部数据采用uint 16格
  • Couldn't find executable named joy_node below /opt/ros/kinetic/share/joy解决方法

    最近想用joy node这个节点 xff0c 然后就通过 sudo apt get install ros kinetic joy 去安装 xff0c 然后运行rosrun joy joy node时候一直错误显示Segmentation
  • ros修改map_server地图发布的map关联的坐标系frame_id(多机器人联合建图用)

    帮师弟做多机器人联合建图的时候 遇到了map的坐标系问题如下 map server发布的 map话题包含了frame坐标系关联 想要正确的让多个机器人共同建图导航需要修改 map话题以及其绑定的frame坐标系 防止机器人之间的相互冲突 下
  • ROS传输图像带宽不够用的解决方法(realsenseD415压缩图像)

    最近在做图像的深度学习识别 xff0c 但是移动机器人上的电脑配置不够 xff0c 只能用我的电脑远程的去处理图像 xff0c 但是遇到了严重的带宽瓶颈 xff0c 按照我的电脑150Mbps的无线网卡来算 xff0c 每秒的极限传输速度就
  • dockerfile配置运行

  • 气压计高度融合—卡尔曼滤波

    实验平台 xff1a 自制飞控板 xff0c STM32F407主控 xff0c 传感器 xff1a MPU6050 MS5611 正文 xff1a 前几天看了这篇文章 xff0c 做了气压计的高度融合 http www zxiazai c
  • GD32F303移植FreeRTOS

    GD32F303移植FreeRTOS 一 移植环境 系统 xff1a WIN7 MDK xff1a keil v5 26 开发板 xff1a GD32F303C EVAL 固件库 xff1a V1 0 2 FreeRTOS版本 xff1a
  • FreeRTOS静态创建任务

    一 静态方式创建任务和删除任务 1 gt 测试环境 系统 xff1a WIN7 MDK xff1a keil v5 26 开发板 xff1a GD32F303C EVAL 固件库 xff1a V1 0 2 FreeRTOS版本 xff1a
  • python实现smote处理正负样本失衡问题

    机器学习中难免遇到正负样本不平衡问题 xff0c 处理办法通常有梁总 xff0c 一 xff1a 过采样 xff0c 增加正样本数据 xff1b 二 xff1a 欠采样 xff0c 减少负样本数据 xff0c 缺点是会丢失一些重要信息 sm
  • echarts 饼图hover效果,饼图中间显示自定义信息

    option 61 tooltip show true trigger 39 item 39 position 39 35 39 39 32 39 backgroundColor 39 implements 39 textStyle col
  • MATLAB在线工具

    在线Matlab工具 xff0c 不用安装matlab了 xff0c 里面的语法几乎和matlab相同 matlab网页版 xff1a 1 octave online http octave online net 2 matlab onli
  • Apache IoTDB下载与安装

    1 中文官方文档 xff1a https iotdb apache org zh 2 下载地址 xff1a https iotdb apache org zh Download 发行版本踩了个小坑 xff1a 1 0 0版本启动时如果作为单
  • 【游戏开发】游戏开发书籍汇总

    1 游戏设计的艺术 2 游戏设计的100个原理 3 我在美国学游戏设计 4 游戏新手村 xff1a 从零开始做游戏 5 Directx游戏开发终极指南 6 Windows游戏编程大师技巧 7 快乐之道 xff1a 游戏设计的黄金法则 人类的

随机推荐

  • 【获奖公布】“我的2016”主题征文活动

    还记得2015的年末 xff0c 2016的新年伊始 xff0c 你给自己定下的目标 xff0c 对自己许下的诺言么 xff1f 时光荏苒 xff0c 一年又在指缝间溜走了 xff0c 离2016的结束还剩十多天 xff0c 在接下来的这十
  • Dockerfile介绍与指令解析

    一 Dockerfile介绍 镜像是容器的基础 xff0c 每次执行docker run的时候都会指定哪个镜像作为容器运行的基础 我们之前的例子都是使用来自docker hub的镜像 xff0c 直接使用这些镜像只能满足一定的需求 xff0
  • Kubernetes快速上手指南,让你所见即所得

    版权声明 xff1a 本文为 ABC实验室 原创文章 xff0c 版权所有 xff0c 侵权必究 xff01 编者语 Kubernetes作为新一代云计算平台 xff0c 自2014年开源以来得到快速发展 xff08 2016年 xff09
  • 使用github管理科研文献

    使用github管理科研文献 一 准备工作 xff1a 二 建立远程科研文献库三 远程科研文献数据库的维护四 其他PC客户端的访问 每个科研工作者都需要建立自己的科研文献库 以楼主本人为例 xff0c 我通常在实验室的台式机上完成科研文献的
  • RBF神经网络逼近在线自适应控制(MATLAB实现之S函数模块分析)

    上次用了参考模型的方法用RBF神经网络试了一下放到自适应控制模型上 xff0c 其实跟踪效果还可以 xff0c 放大了有点不舒服就是了 xff0c 差了一点点 xff0c 然后看了看书的第四章 xff0c 知道采用梯度下降法调整神经网络权值
  • 基于RBF神经网络的Flexible Robot自适应控制(论文笔记)

    上一篇笔记 https blog csdn net qq 24182661 记录的是第一篇论文2015 Continuum Robots for Medical Applications A survey的论文笔记 xff0c 主要做的笔记
  • Golang 解析xml文件标签带冒号( : )解决方案

    背景 xff1a 我们有项目需要使用golang语言解析rabbitmq xml 并把里面的内容解析出来 xff0c 但是在解析的时候遇到了问题 xff0c 最后通过google搜索 xff0c 在stackoverflow上找到了解决方案
  • 【Python】Python中 在函数内部对函数外的变量进行操作

    在Python中 xff0c 如果想函数内部对函数外的变量进行操作 xff0c 有一些问题 xff08 一些在Java xff0c C中再正常不过的操作这里就不行 xff09 正常情况下 xff0c 在函数外定义的变量是可以直接在函数体内部
  • 关于proteus中串口发送数据与实际不符的问题(如发00h,收80h)

    工程实训要用到串口 xff0c 51单片机 xff0c 串口工作方式一 xff0c 只发不接受 在proteus中用VIRTUAL TERMINAL xff08 虚拟终端 xff09 监视串口发送数据 现象 xff1a 不论是用虚拟终端还是
  • Jetson TX2的各种坑.md

    最近在使用Jetson TX2 在跑实验 xff0c 然后遇到下面问题 xff0c 做笔记 xff0c 记录一下 内存出错无法 xff0c 中断 出现下面那种错误 2019 01 11 19 41 46 959970 E tensorflo
  • 基于STM32的FreeRTOS开发(1)----FreeRTOS简介

    为什么使用freertos FreeRTOS 是一个免费和开源的实时操作系统 xff0c 它主要用于嵌入式系统 它非常轻量级 xff0c 可以在很小的硬件资源上运行 xff0c 因此非常适合在限制硬件资源的嵌入式系统中使用 FreeRTOS
  • 获奖公布 | 征文——从高考到程序员

    每年的这几天 xff0c 空气中总会弥漫着紧张的味道 xff0c 2017 全国统一高考如期而至 朋友圈里的各种高考热文如流水般 xff0c 不停歇地出现在眼前 xff0c 难免会勾起自己曾经的青涩时光 还记得 xff0c 考试前 xff0
  • STM32驱动ESP8266连接阿里云(2)----接入阿里IoT Studio实现Web可视化

    烧录MQTT固件 概述 阿里IoT Studio是一个物联网开发平台 xff0c 可用于快速构建基于云端的物联网应用 它提供了丰富的物联网组件和工具 xff0c 使得开发者可以轻松地进行设备接入 数据存储 数据分析等操作 要实现Web可视化
  • ‘gbk‘ codec can‘t encode character解决方法

    一 问题 xff1a 在将网络数据流导入文件时 xff0c 有可能遇到 39 gbk 39 codec can 39 t encode characte 错误 二 分析 xff1a 1 在windows下面 xff0c 新文件 xff08
  • ROS中的tf(transform)的理解 ,你追我小乌龟的深入剖析

    对于ros中的tf其实一直理解不是很深 xff0c 最近工作上一直在用 xff0c 就很懵逼 xff0c 出来混果然是要还的 xff5e 于是这两天把ros官方提供的小乌龟版的你追我 xff0c 如果你追到我 xff0c 我就让你xxx x
  • 线程同步之信号量(sem_init,sem_post,sem_wait)

    信号量和互斥锁 mutex 的区别 xff1a 互斥锁只允许一个线程进入临界区 xff0c 而信号量允许多个线程同时进入临界区 不多做解释 xff0c 要使用信号量同步 xff0c 需要包含头文件semaphore h 主要用到的函数 xf
  • 老程序员给的10条建议,句句经典

    1 想清楚 xff0c 再动手写代码 刚入行的新手 xff0c 为了展示自己的能力 xff0c 拿到需求迫不及待地就开始上手写代码 xff0c 大忌 xff01 2 不交流 xff0c 就会头破血流 不爱说话和沟通 xff0c 需求都理解错
  • Clickhouse快速上手 原理篇

    1 背景 公司目前使用Greenplum作为报表实时聚合查询的OLAP数据库 xff0c 当时主要是其使用门槛相对较低 xff0c 同时支持事务 xff0c 能在用户访问时候事务更新数据 xff0c 使用云厂商的产品 xff0c 技术支持也
  • Clickhouse快速上手 使用篇

    接着clickhouse原理篇 xff0c 下面来介绍他的具体使用场景 xff0c 包括数据导入 xff0c 更新等 文章目录 1 数据导入调研计划实施1 cos文件系统集成2 编码获取 2 数据更新和使用 1 数据导入 根据官方介绍 Cl
  • linux基本服务之sshd

    这段时间在学习linux常用服务 xff0c 这里将学习内容以及自己的实验心得记录下来 在自己忘记的时候也好复习 实验环境 xff1a centos 6 7 64bit 1 简介 SSHD服务 介绍 xff1a SSH协议 xff1a 安全