ssh远程登录协议

简介: ssh远程登录协议

一,   ssh服务基础知识

(一)什么是SSH服务器

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。

SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

被连的是服务机  常用端口号为tcp22

如果你作为zhangsan用户去连接对面服务端的话,那么对面也要有个zhangsan用户

(二)ssh  服务有点(区别于talent)

  • 数据传输是加密的,可以防止信息泄漏
  • 数据传输是压缩的,可以提高传输速度

(三)常见ssh  协议

openssh  centos7  上自带的软件 帮助我们实现远程连接

OpenSSH 是实现SSH协议的开源软件项目,适用于各种UNIX、 Linux 操作系统。Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。

执行"systemctl start sshd"命令即可启动sshd 服务

sshd 服务默认使用的是TCP的22端口,安全协议版本sshv2,出来2之外还有1(有漏洞)ftp  20 21

ssh_config和sshd_config都是ssh服务器的配置文件,

ssh_config是针对客户端的配置文件,

sshd_config是针对服务端的配置文件。

(四)ssh 常见文件位置

服务名称:sshd
服务端主程序:/usr/sbin/sshd  
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config

/etc/ssh  放的公钥和私钥文件

~/.ssh    当使用ssh后,客户机在~/.ssh   文件夹中会生成    known-hosts  

这是公钥的合集

(五)ssh原理

1,公钥传输原理

  • 客户端发起链接请求
  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
  • 客户端生成密钥对
  • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
  • 客户端发送加密值到服务端,服务端用私钥解密,得到Res
  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

2,ssh加密通讯原理

(1)对称加密

1、概念

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用

2、常用算法

在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。

3、特点

1、加密方和解密方使用同一个密钥;

2、加密解密的速度比较快,适合数据比较长时的使用;

3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;

4、优缺点

对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。

对称加密算法的缺点是在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的独一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担

(2)非对称加密

1、概念

非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

2、常用算法

- RSA(RSA algorithm):目前使用最广泛的算法

- DSA(Digital Signature Algorithm):数字签名算法,和 RSA 不同的是 DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但其性能要比RSA快

- ECC(Elliptic curve cryptography,椭圆曲线加密算法)

- ECDSA:Elliptic Curve Digital Signature Algorithm,椭圆曲线签名算法,是ECC和 DSA的结合,相比于RSA算法,ECC 可以使用更小的秘钥,更高的效率,提供更高的安全保障

3、原理

首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求

用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下

5、优缺点

相比于对称加密技术,非对称加密技术安全性更好,但性能更慢。

客户机连服务机,客户机发送数据加上服务机的公钥进行加密   所以客户机~/.ssh 目录下会有服务机的公钥

服务机收到数据后,用自己的私钥来打开文件

二,ssh  生产环境使用出现的情况

(一)怎么确定我要连的是 真正的服务机

客户机连到服务机后,客户机的~/.ssh   文件下的公钥合集,能看到对应服务机的公钥

我们再去到服务机,ssh 127.0.0.1      连接自己,看公钥,对比两边的公钥

(二)同一ip  换了机器后ssh连不上

192.168.217.99这一台机器年久失修,采购新的机器ip 也叫99   ssh是连不上的

因为两台电脑公钥不一致。现在需要把 客户机里99原来的公钥文件删了,让新的99和客户机相当于第一次配对

我们去到客户机   ~/.ssh  文件夹中的公钥合集过滤出99  机器的公钥,并删除

三,ssh  选项

(一)指定登录账户  -l

(二)指定端口号 -p

因为默认端口是22   所以正常不用加 -p 选项

     改端口号

此处拓展一个生产环境中的安全加固

服务机最好把ssh  的22端口号改掉,防止被暴力远程连接,多次试密码

打开

将端口号改成5927

这下ssh   必须指定5927 的端口了

(三)跳板机 -t

此命令用于       服务机前有多台跳板机(多发生在政府机关或者保密性质的单位)

可以一条命令直接到最后的服务机

(四) ssh 直接接命令

四,ssh 配置文件常用改变

(一)把客户端 yes 去掉

改客户端配置文件客户端配置文件:/etc/ssh/ssh_config

将35行    的ask  改成no

五,ssh 安全加固

  1. 建议使用非默认端口 22
  2. 禁止使用protocol version 1
  3. 限制可登录用户 白名单
  4. 设定空闲会话超时时长
  5. 利用防火墙设置ssh访问策略
  6. 仅监听特定的IP地址 公网 内网
  7. 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
  8. 使用基于密钥的认证
  9. 禁止使用空密码
  10. 禁止root用户直接登录
  11. 限制ssh的访问频度和并发在线数
  12. 经常分析日志 分离

(一)服务机禁止root  用户连接

改服务端配置文件:/etc/ssh/sshd_config

将 yes 改为no

但是这样,有漏洞,就是先登其他账户,再用 su 命令切 root 用户

不允许切换root用户可以将wheel组注释解掉

只有wheel 组里的才能用 su

(二)服务机黑白名单

白名单:默认拒绝所有,只有允许的人才可以访问  (生产环境用白名单安全级别更高)

黑名单: 默认允许所有, 只名单上的 才不允许

1,白名单:

只允许 192.168.91.100 来登录 服务机的张三账户

允许 所有ip 来登录 服务机的李四账户

2,黑名单

(三)禁用反向 dns

(如果有一天 登ssh 很慢很慢)

改成no

(四)监听

监听 (相当于白名单)

监听和白名单的区别:

监听在网卡这边就识别了        白名单还需要去读配置文件

六,ssh 免交互

ssh-keygen

将公钥发给   服务机

ssh  直接就连上了

有密钥文件 但是不想输密码

不验证密码,使用免交互登录的话,输入ssh-agent  bash将ssh-agent交给bash管理

再输入ssh-add将用户私钥添加到运行中的ssh-agent中,后续的远程连接ssh,就不需要每次都输入密码并验证。一旦私钥被添加到ssh-agent中,它会暂时保存解密后的私钥方便后续使用

七,同时操作多台机器pssh

1,下载额外元

2,yum install pssh -y

3,-i 显示过程

相关文章
|
2月前
|
网络安全
检查使用IP协议远程维护的设备是否配置SSH协议,禁用telnet协议
检查使用IP协议远程维护的设备是否配置SSH协议,禁用telnet协议
52 0
|
2月前
|
移动开发 监控 安全
通过SSH协议实现的屏幕局域网电脑监控:屏幕安全访问代码
随着科技的不断发展,网络安全问题愈发突出。为了确保屏幕数据的安全,我们需要一种高效可靠的监控方法。本文介绍了一种基于SSH协议的屏幕局域网电脑监控方案,同时提供了相关代码示例,确保屏幕数据的安全传输和访问。
260 0
|
安全 网络安全 C++
基于Windows下VSCode安装及安装相关插件通过SSH协议远程连接服务器详细方法(一)
基于Windows下VSCode安装及安装相关插件通过SSH协议远程连接服务器详细方法
396 0
基于Windows下VSCode安装及安装相关插件通过SSH协议远程连接服务器详细方法(一)
|
2月前
|
算法 安全 Shell
SSH:加密安全访问网络的革命性协议
SSH:加密安全访问网络的革命性协议
82 9
|
2月前
|
监控 前端开发 安全
【专栏】介绍了前端工程师如何掌握SSH命令,包括SSH协议的基础知识、命令行操作如登录、文件传输、目录管理和进程管理
【4月更文挑战第29天】本文介绍了前端工程师如何掌握SSH命令,包括SSH协议的基础知识、命令行操作如登录、文件传输、目录管理和进程管理。在前端开发中,SSH用于部署项目、协同后端开发及服务器监控。文章还强调了使用密钥认证、配置别名及安全注意事项,并提醒开发者面对问题时如何解决。学习和熟练运用SSH是前端工程师适应复杂项目需求的关键。
|
2月前
|
存储 弹性计算 算法
SSH学习(三)- SSH协议中的Public Key Algorithm
在SSH协议中,有两个地方涉及到公钥算法,分别是: 1. 服务端认证:服务端在进行密钥协商的时候证明自己身份,防止中间人攻击,此时为SSH-TRANS协议发生的事情; 2. 客户端认证:客户端通过PublicKey方式证明自己身份,完成SSH登录认证,此时SSH-USERAUTH发生的事情; 这两种情况下的公钥算法使用的是同一个概念,接下来本文将主要基于PublicKey公钥认证方式,学习对应的内容。
121 1
SSH学习(三)- SSH协议中的Public Key Algorithm
|
2月前
|
安全 算法 Linux
SSH协议的原理和使用:深入剖析SSH协议的原理和使用方法
SSH协议的原理和使用:深入剖析SSH协议的原理和使用方法
901 0
|
2月前
|
安全 Shell 网络安全
远程登录安全连接协议SSH(Secure Shell)
SSH(Secure Shell)协议是一种用于在不安全网络上提供安全远程登录、命令执行和数据传输的加密网络协议,通过公钥加密和身份验证技术确保通信的安全性和隐私性。
128 0
|
7月前
|
Shell 网络安全 开发工具
git02->gui图形化界面使用,ssh协议,idea集成GIT
git02->gui图形化界面使用,ssh协议,idea集成GIT
60 0
git02->gui图形化界面使用,ssh协议,idea集成GIT
|
2月前
|
存储 网络安全 开发工具
Git的GUI图形化工具&ssh协议&IDEA集成Git
Git的GUI图形化工具&ssh协议&IDEA集成Git
146 0