SSH服务:

干货:我的虚拟机情况,改完之后

连接速度飞起

修改相应配置:

vim /etc/ssh/sshd_conf
UseDNS no
GSSAPIAuthentication no
保存退出
重启sshd
systemctl restart sshd

ssh服务器

如果securecrt正在连接远程主机,更改服务端口号时,该终端不会断开,但断开后肯定连接不上,假如该远程主机又开启了selinux,你又没做设置,直接改端口后,会导致端口失效,直接怎么都连不上了,你就找机房人员给你处理吧。公司里若不需要selinux,首先禁用之,然后更改端口号后再上线服务器,以防止***连接暴力猜解,导致日志文件增大。

服务器端:sshd, 配置文件: /etc/ssh/sshd_config
常用参数:

Port
ListenAddress ip
LoginGraceTime 2m
PermitRootLogin yes
StrictModes yes 检查.ssh/文件的所有者,权限等
MaxAuthTries 6
MaxSessions 10 同一个连接最大会话
PubkeyAuthentication yes
PermitEmptyPasswords no
PasswordAuthentication yes 如果使用基于Key ssh登陆的话,此项改no禁用之
GatewayPorts no
ClientAliveInterval 10 单位:秒 默认多少秒出发下面的检测,
ClientAliveCountMax 默认3 活动检测 检测3次,一共30秒,无活动断开连接
UseDNS no
GSSAPIAuthentication yes 提高速度可改为no
MaxStartups 未认证连接最大值,默认值10 可不输入密码连接最大数,之后30%随机拒绝,最大连接值为60
Banner /path/file 登陆后提示语,可起到警示作用
限制可登录用户的办法:
AllowUsers user1 user2 user3
DenyUsers
AllowGroups
DenyGroups

ssh服务的最佳实践

建议使用非默认端口

禁止使用protocol version 1
限制可登录用户
设定空闲会话超时时长
利用防火墙设置ssh访问策略
仅监听特定的IP地址
基于口令认证时,使用强密码策略
tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登录
限制ssh的访问频度和并发在线数
经常分析日志

具体的软件实现:

OpenSSH: ssh协议的开源实现,CentOS默认安装
dropbear:另一个开源实现


SSH协议版本

v2:双方主机协议选择安全的MAC方式

基于DH算法做密钥交换,基于RSA或DSA实现身份认证


两种方式的用户登录认证:

基于password
基于key


Openssh软件组成

相关包:

openssh
openssh-clients
openssh-server

工具:

基于C/S结构
Linux Client: ssh, scp, sftp,slogin
Windows Client:xshell, putty, securecrt, sshsecureshellclient
Server: sshd

ssh客户端
ssh, 配置文件:/etc/ssh/ssh_config
Host PATTERN
StrictHostKeyChecking no 首次登录不显示检查提示
格式:

ssh [user@]host [COMMAND]
ssh [-l user] host [COMMAND]

常见选项

-p port:远程服务器监听的端口
-b:指定连接的源IP
-v:调试模式
-C:压缩方式
-X:支持x11转发
-t:强制伪tty分配
ssh -t remoteserver1 ssh -t remoteserver2 ssh remoteserver3

允许实现对远程系统经验证地加密安全访问
当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub(CentOS7默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接


如下图,公钥交换原理:

服务端发送自己的公钥和会话ID给客户端,
客户端接收后用自己的公钥和会话ID做异或运算,
生成一段字符串,
再用服务器的公钥加密后,
返还给服务端,
服务端用自己的私钥解密后,
得到这段字符串,
再与会话ID异或运算,
得到客户端的公钥,
双方都持有自己的私钥公钥和对端的公钥。


如下图,ssh加密通讯


基于用户名口令登录验证


基于密钥的登录方式

基于key认证实现
基于密钥的认证:
(1) 在客户端生成密钥对,默认使用rsa算法,默认生成的密钥对存储在家目录.ssh下,**此私钥非常重要,如果被*盗取,后果不堪设想,考虑加密码,读取权限600

ssh-keygen -t rsa [-P ''] [-f “~/.ssh/id_rsa"]

(2) 把公钥文件传输至远程服务器对应用户的家目录,后续不指明拷贝和文件和目录都可,自行会复制自己的公钥到远端服务器的.ssh目录下,生成authorized_keys

ssh-copy-id [-i [identity_file]] [user@]host

(3) 测试:基于密钥认证后,可以基于ssh自动化批量运维一些主机,加上for循环IP地址,实现批量增删等功能。

(4) 在SecureCRT或Xshell实现基于key验证

在SecureCRT工具—>创建公钥—>生成Identity.pub文件
转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化格式),并复制到需登录主机上相应文件authorized_keys中,注意权限必须为600,在需登录的ssh主机上执行:ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys

(5) 此时就不需要输入密码ssh到对端,但是风险很大,下图给私钥加密码,并通过ssh-agent服务代理 ssh-add托管私钥的密码


(6) 在集群环境中,需要互相主机直接联通不需要密码,则可以使用,一个主机ssh-keygen生成私钥和公钥,然后ssh-copy-id IP(自己主机的),然后将家目录下的.ssh文件夹整个复制到集群内的其他主机,则可互相ssh不需要密码。


SSH端口转发

本地转发:

-L localport:remotehost:remotehostport sshserver

选项:

-f 后台启用
-N 不打开远程shell,处于等待状态
-g 启用网关功能

示例

ssh –L 9527:telnetsrv:23 -Nfg sshsrv
ssh -L 9527:172.16.36.107:23 -Nf 172.16.36.106
telnet 127.0.0.1 9527
当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,再解密被转发到telnetsrv:23
data <--> localhost:9527 <--> localhost:XXXXX <--> sshsrv:22 <--> sshsrv:YYYYY <--> telnetsrv:23

远程转发:

-R sshserverport:remotehost:remotehostport sshserver

示例:

ssh –R 9527:telnetsrv:23 –Nf sshsrv
ssh -R 9527:172.16.36.107:23 -Nf 172.16.36.105
telnet 127.0.0.1 9527
让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23
Data <--> sshsrv:9527 <--> sshsrv:22 <--> localhost:<-->   localhost:YYYYY <--> telnetsrv:23

动态端口转发:
当用firefox访问internet时,本机的1080端口做为代理服务器,firefox的访问请求被转发到sshserver上,由sshserver替之访问internet

ssh -D 9527 root@sshserver -fNg

在本机firefox设置代理socket proxy:127.0.0.1:1080
curl --socks5 127.0.0.1:1080 http://www.google.com

如果想要让windows系统也使用centos 7当代理转发,需要在centos 7 etc/ssh/sshd_config 里开启保存退出
ssh -gD 9527 localhost

scp命令
scp [options] SRC... DEST/
两种方式:

scp [options] [user@]host:/sourcefile /destpath
scp [options] /sourcefile [user@]host:/destpath

常用选项:

-C 压缩数据流
-r 递归复制
-p 保持原文件的属性信息
-q 静默模式
-P PORT 指明remote host的监听的端口

rsync命令
基于ssh和rsh服务实现高效率的远程系统之间复制文件
使用安全的shell连接做为传输方式

•rsync -av /etc server1:/tmp 复制目录和目录下文件
•rsync -av /etc/ server1:/tmp 只复制目录下文件

比scp更快,只复制不同的文件

常用选项:

-n 模拟复制过程
-v 显示详细过程
-r 递归复制目录树
-p 保留权限
-t 保留时间戳
-g 保留组信息
-o 保留所有者信息
-l 将软链接文件本身进行复制(默认)
-L 将软链接文件指向的文件复制
-a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)

sftp命令
使用ls cd mkdir rmdir pwd get put等指令,可用?或help获取帮助信息

sftp [user@]host
sftp> help


轻量级自动化运维工具

pssh:基于python编写,可在多台服务器上执行命令的工具,也可实现文件复制,提供了基于ssh和scp的多个并行工具
项目:http://code.google.com/p/parallel-ssh/
pdsh:Parallel remote shell program,是一个多线程远程shell客户端,可以并行执行多个远程主机上的命令。 pdsh可以使用几种不同的远程shell服务,包括标准的“rsh”,Kerberos IV和ssh
项目: https://pdsh.googlecode.com/
mussh:Multihost SSH wrapper,是一个shell脚本,允许您使用一个命令在多个主机上通过ssh执行命令或脚本。 mussh可使用ssh-agent和RSA / DSA密钥,以减少输入密码
项目:http://www.sourceforge.net/projects/mussh
说明:以上工具都包含在EPEL源中

pssh工具基于KEY验证的情况下,很适合中小企业智能运维。

选项如下:br/>--version:查看版本
-h:**主机文件列表**,内容格式”[user@]host[:port]”
-H:主机字符串,内容格式”[user@]host[:port]”
-A:手动输入密码模式
-i:每个服务器内部处理信息输出
-l:登录使用的用户名
-p:并发的线程数【可选】
-o:输出的文件目录【可选】
-e:错误输出文件【可选】
-t:TIMEOUT 超时时间设置,0无限制【可选】
-O:SSH的选项
-P:打印出服务器返回信息
-v:详细模式

基本用法详解:
通过pssh批量关闭seLinux

pssh -H root@192.168.1.10 -i ‘sed -i "s/^SELINUX=.*/SELINUX=disabled/" /etc/selinux/config’

批量发送指令

pssh -H root@192.168.1.10 -i setenforce 0
pssh -H wang@192.168.1.10 -i hostname

命令调用变量时,单双引号显示结果不同,单引号显示远程主机变量内的内容,双引号显示当前主机变量内的内容。

pscp.pssh命令
pscp.pssh功能是将本地文件批量复制到远程主机
pscp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] local remote
pscp-pssh选项

-v 显示复制过程
-r 递归复制目录

将本地curl.sh 复制到/app/目录

pscp.pssh -H 192.168.1.10 /root/test/curl.sh /app/
pscp.pssh -h host.txt /root/test/curl.sh /app/

将本地多个文件批量复制到/app/目录

pscp.pssh -H 192.168.1.10 /root/f1.sh /root/f2.sh /app/

将本地目录批量复制到/app/目录

pscp.pssh -H 192.168.1.10 -r /root/test/ /app/

pslurp命令
pslurp功能是将远程主机的文件批量复制到本地
pslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par][-o outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir] remote local(本地名)
pslurp选项

-L 指定从远程主机下载到本机的存储的目录,local是下载到本地后的名称
-r 递归复制目录

转载于:https://blog.51cto.com/5033330/2371818

Linux之SSH性能调优,防止连接等待时间过长,连接速度飞起相关推荐

  1. oracle数据库性能调优技术--深入理解散列连接执行计划

    一.概述 这篇文章是数据库性能调优技术系列的第四篇.上一篇文章讲解了深入理解嵌套循环连接执行计划. 上一篇文章中提到两张表的连接有三种执行方式:1)嵌套循环连接:2)散列连接:3)归并连接.散列连接是 ...

  2. 基于Linux的WebSphere性能调优与故障诊断

    一.关于was数据源等问题的配置 (1)关于was数据源连接池的最大.最小配置多大合适?怎样去计算? (2)关于JVM的配置,64位系统,64位WAS,最值小和最大配置多大最优?怎样去计算? (3)应 ...

  3. Linux/Windows系统内核性能调优

    做过Linux平台性能测试的童鞋平时可能会遇到如下问题: 1. TCP端口号不够用导致并发上不去(即与服务器端建立新连接失败) 2. TIME_WAIT状态连接过多导致应用服务器(Nginx.Hapr ...

  4. Linux—JVM等性能调优监控

    关注微信公众号:CodingTechWork,一起学习进步. 介绍   在linux上跑程序时,常常遇到程序卡顿,内存消耗大,这时候,我们需要使用free查看内存使用情况及top内存消耗排行,当然,我 ...

  5. Linux上Jvm性能调优方法

    确定性能问题 OS 诊断 先考察Linux操作系统上显示的性能指标,主要关注CPU.Memory.I/O三方面: CPU 诊断 主要考察CPU的负载均值(Load Average), CPU 使用率, ...

  6. 程序 多核优化 linux,linux 多核CPU性能调优

    常常感觉系统资源不够用,一台机子上跑了不下3个比较重要的服务,但是每天我们还要在上面进行个备份压缩等处理,网络长时间传输,这在就很影响本就不够用的系统资源: 这个时候我们就可以把一些不太重要的比如co ...

  7. php-fpm 多核,linux 多核CPU性能调优

    常常感觉系统资源不够用,一台机子上跑了不下3个比较重要的服务,但是每天我们还要在上面进行个备份压缩等处理,网络长时间传输,这在就很影响本就不够用的系统资源: 这个时候我们就可以把一些不太重要的比如co ...

  8. Linux清mysql磁盘,mysql与linux ~ 磁盘分析与调优

    一 简介 谈谈磁盘IO的问题二 目的:如何进行IO性能问题的排查 二  linux角度 一 机械硬盘基本定义 寻道时间,表示磁头在不同磁道之间移动的时间(最耗时). 旋转延迟,表示在磁道找到时,中轴带 ...

  9. 应用性能调优分析与总结

    当出现用户抱怨网站太卡.软硬件需要升级.系统性能不佳等情况,程序员这时需要对系统进行性能调优,实现性能最大化,满足业务的最新需求. 1   为什么要性能调优? 应用上线前在性能上无法满足需求. 应用系 ...

最新文章

  1. AVCaptureMovieFileOutput 视频方向(锁定竖屏or不锁定都可以)
  2. String类为什么被设计为不可变的?
  3. PHP ServerPush (推送) 技术的探讨
  4. maven添加非官方jar包到本地库
  5. 华为鸿蒙发布2.0,华为做到了!鸿蒙2.0正式发布,苹果安卓有危机?
  6. conda pip安装在哪里_Python环境篇-Minicondaamp;Pip使用汇总
  7. ccf认证俄罗斯方块java_CCF认证历年试题 - osc_h3robkrt的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. linux总线错误无法删除文件,linux – 系统D-Bus不允许使用conf文件来破坏所有权...
  9. bootstrap java web_Java web MVC(jsp,servlet,dao)+Bootstrap购物网站开发经验总结 (持续更新)...
  10. Python django model 插入新增一条数据,得到create返回主键值 id
  11. 家用计算机的使用说明,AWIND奇机家用无线投屏器使用说明
  12. 把Ethernet(以太网)基本工作原理说清楚
  13. 数据处理技巧(3):excel打开txt数据,出现多个数据在同一个单元格的解决办法
  14. java.lang.IllegalArgumentException: Failed to decrypt.
  15. ICPR MTWI 2018 挑战赛二:网络图像的文本检测
  16. .NET 6 WebApi Swagger 配置 JWT token+Authorize认证
  17. 投标任性,围标串标一查实,扫黑除恶,现在投标必须签订一样协议
  18. 软工网络15个人作业3(201521123007谭燕)
  19. 小伙子利用C++设计出最难的“数独游戏”,让C++重回巅峰!
  20. 什么是SSL/TLS ?

热门文章

  1. 《数据科学:R语言实现》——3.9 排列数据
  2. jboss部署出现jboss.naming.context.java.rmi找不到错误
  3. webstorm常用设置
  4. CentOS7 NTP客户端和服务器安装和使用
  5. CSS里常见的块级元素和行内元素
  6. NodeJS + Aliyun 实现 DDNS
  7. MySQL集群系列2:通过keepalived实现双主集群读写分离
  8. 解读刘强东关于人才的两个标准和5个层次
  9. SQL Server游标的使用【转】
  10. Web Service (二) CXF自动发布Web Service(No Spring)