SSH远程登录协议


一、什么是SSH服务器?

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

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

centos7上自带软件openssh帮助我们实现连接。SSH既有客户端又有服务端。sshd 服务默认使用的是TCP的22端口。

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

如何分清客户端和服务端?
记住谁发起连接谁就是客户端,谁提供连接就是服务端。

二、SSH原理

加密通信原理

(1)对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。
特点:
1、加密方和解密方使用同一个密钥;
2、加密解密的速度比较快,适合数据比较长时的使用;
3、密钥传输的过程不安全,且容易被破解,密钥管理也比较麻烦;
(2)非对称加密
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。相比于对称加密技术,非对称加密技术安全性更好,但性能更慢。

公钥传输原理

在这里插入图片描述
连接过程:

  • 客户端发起链接请求

  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)

  • 客户端生成密钥对

  • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密

  • 客户端发送加密值到服务端,服务端用私钥解密,得到Res

  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)

  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

服务端存储公钥的位置
在这里插入图片描述

三、 SSH登录

登录选项

ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port
当在 Linux 主机上远程连接另一台 Linux 主机时,如当前所登录的用户是 root 的话,当连接另一台主机时也是用 root 用户登录时,可以直接使用 ssh IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。
在这里插入图片描述
默认使用22端口,首次登录会询问,并要求输入密码
如果不需要询问,则可以修改客户端配置文件
vim /etc/ssh/ssh_configvim /etc/ssh/ssh_config
在这里插入图片描述
将ask修改成no,并重启服务即可。

选项-l可以方便跳板连接
即当前主机因路由协议不能直接访问别的主机,可以登录其他主机,再从其他主机上登录目标主机。(曲线救国)
在这里插入图片描述

服务端配置

ListenAddress ip
#监听地址设置SSHD服务器绑定的IP 地址,0.0.0.0 表示侦听所有地址安全建议:如果主机不需要从公网ssh访问,可以把监听地址改为内网地址 这个值可以写成本地IP地址,也可以写成所有地址,即0.0.0.0 表示所有IP。

LoginGraceTime 2m
#用来设定如果用户登录失败,在切断连接前服务器需要等待的时间,单位为秒

PermitRootLogin yes
#默认 ubuntu不允许root远程ssh登录

StrictModes yes
#检查.ssh/文件的所有者,权限等

MaxAuthTries
#用来设置最大失败尝试登陆次数为6

MaxSessions 10
#同一个连接最大会话
PubkeyAuthentication yes
#基于key验证

PermitEmptyPasswords no
#密码验证当然是需要的!所以这里写 yes,也可以设置为 no,在真实的生产服务器上,根据不同安全级别要求,有的是设置不需要密码登陆的,通过认证的秘钥来登陆。

PasswordAuthentication yes
#基于用户名和密码连接

UseDNS yes
#提高速度可改为no 内网改为no 禁用反向解析

GSSAPIAuthentication yes
#提高速度可改为no
MaxStartups
#未认证连接最大值,默认值10

Banner /path/file
#以下可以限制可登录用户的办法:白名单 黑名单
AllowUsers user1 user2 user3@ip(限制主机)
DenyUsers user1 user2 user3
AllowGroups g1 g2
DenyGroups g1 g2

使用密钥进行免密登录

原理
在这里插入图片描述

  1. 首先在客户端生成一对密钥(ssh-keygen)

  2. 并将客户端的公钥ssh-copy-id 拷贝到服务端

  3. 当客户端再次发送一个连接请求,包括ip、用户名

  4. 服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串

  5. 服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端

  6. 得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

  7. 服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录

1.生成密钥
在这里插入图片描述
2.用命令将密钥拷贝过去
在这里插入图片描述
做完以上配置后即可免密登录。

  • 35
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值