Linux网络服务三:SSH 远程连接

想当大佬的一天 2024-06-24 17:07:11 阅读 83

文章目录

1.SSH概述1.1什么是SSH1.2ssh的特点1.3 OpenSSH1.3.1 概念1.3.2所含软件包 1.4ssh远程连接原理 3.ssh登录方式3.1第一种方式3.2第二种方式3.3第三种方式:远程控制 4.服务端配置5.免密登录5.1远程登录的方式5.1.1基于密码登录5.1.2 基于密钥登录**示例:**1.生成密钥2.将公钥文件导入对方用户3.查看是否能够免密登录

1.SSH概述

1.1什么是SSH

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

1.2ssh的特点

安全性: 数据传输是加密的,可以防止信息泄漏。

身份验证:防止未经授权的用户访问远程系统。

远程管理:可通过SSH协议登录远程服务器并执行命令,无需直接物理访问设备。

端口转发:SSH支持 端口转发功能,可以安全地传输其他协议和应用程序。

传输速度: 数据传输是压缩的,可以提高传输速度。

SSH具有强大的安全性、身份验证和远程管理功能,使得它成为远程访问和管理计算机系统的首选协议

1.3 OpenSSH

1.3.1 概念

OpenSSH是通过SSH协议实现的一套用于远程登录和文件传输的工具,包括SSH客户端(SSH)和SSH服务器(sshd)。

Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。

1.3.2所含软件包

服务名称:sshd

服务端主程序:/usr/sbin/sshd

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

客户端配置文件:/etc/ssh/ssh.config

1.4ssh远程连接原理

在这里插入图片描述

在这里插入图片描述

客户端发起链接请求

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

客户端生成密钥对

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

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

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

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

3.ssh登录方式

3.1第一种方式

ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p ### -p 指定端口号ssh 192.168.67.101

在这里插入图片描述

3.2第二种方式

ssh -l [远程主机用户名] [远程服务器主机名或IP 地址]###-l 指定登录名ssh -l root 192.168.67.101

在这里插入图片描述

3.3第三种方式:远程控制

ssh [远程登录主机名] [命令]ssh 192.168.67.101 ls

在这里插入图片描述

4.服务端配置

[root@ky15-1 ~]# vim /etc/ssh/sshd_config 17 Port 22 #生产建议修改 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 #用来设置最大失败尝试登陆次数为6MaxSessions 10 #同一个连接最大会话PubkeyAuthentication yes #基于key验证PermitEmptyPasswords no #密码验证当然是需要的!所以这里写 yes,也可以设置为 no,在真实的生产服务器上,根据不同安全级别要求,有的是设置不需要密码登陆的,通过认证的秘钥来登陆。PasswordAuthentication yes #基于用户名和密码连接GatewayPorts noClientAliveInterval 10 #单位:秒ClientAliveCountMax 3 #默认3UseDNS yes #提高速度可改为no 内网改为no 禁用反向解析GSSAPIAuthentication yes #提高速度可改为noMaxStartups #未认证连接最大值,默认值10Banner /path/file#以下可以限制可登录用户的办法:白名单 黑名单AllowUsers user1 user2 user3@ip(限制主机)DenyUsers user1 user2 user3AllowGroups g1 g2DenyGroups g1 g2

5.免密登录

5.1远程登录的方式

5.1.1基于密码登录

原理:

客户端发起ssh请求,服务器会把自己的公钥发送给用户

用户会根据服务器发来的公钥对密码进行加密

加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

5.1.2 基于密钥登录

在这里插入图片描述

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

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

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

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

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

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

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

示例:
1.生成密钥

ssh-keygen

在这里插入图片描述

在这里插入图片描述

2.将公钥文件导入对方用户

在这里插入图片描述

3.查看是否能够免密登录

在这里插入图片描述

成功



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。