目录
1、远程连接服务器简介
2、连接加密技术简介
第一阶段:TCP三次握手版本协商过阶段:
第二阶段:协商算法和确定对称秘钥阶段
3、用户登录ssh服务器
4.举例说明
例一:Linux互连
第一步:生成非对称秘钥(客户端生成秘钥)
第二步:将客户端生成的id_rsa.pub文件发送到服务端
例二:win作为客户端
第一步:客户端生成秘钥
第二步:上传公钥文件到服务端。
第三步:检查传输是否成功:
1、远程连接服务器简介
ssh secure shell 22
(1)什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。
(2)远程连接服务器的功能
分享主机的运算能力 (3)远程连接服务器的类型(以登录的连接界面来分类)
- 文字接口 明文传输:Telnet(23)、RSH等,目前 非常少用 加密传输:SSH(22)为主,已经取代明文传输
- 图形接口:XDMCP、VNC、XRDP等。
(4)文字接口连接服务器 SSH(Secure Shell Protocol,安全的壳程序协议)它可以通过数据包加密技术将等待传输的数据包加 密后再传输到网络上。ssh协议本身提供两个服务器功能:一个是类似telnet的远程连接使用shell的服务器;另一个就是类似ftp服务的sftp-server,提供更安全的ftp服务。
2、连接加密技术简介
目前常见的网络数据包加密技术通常是通过“非对称密钥系统”来处理的。主要通过两把不一样的公钥与私钥来进行加密与解密的过程 。
公钥(public key):提供给远程主机进行数据加密的行为,所有人都可获得你的公钥来将数据加密。 私钥(private key):远程主机使用你的公钥加密的数据,在本地端就能够使用私钥来进行解密。私钥只有自己拥有。 SSH工作过程:在整个通讯过程中,为实现SSH的安全连接,服务端与客户端要经历如下五个阶段:
过程
说明
版本号协商阶段
SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本
密钥和算法协商阶 段
SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用 的算法
认证阶段
SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证
会话请求阶段
认证通过后,客户端向服务器端发送会话请求
交互会话阶段
会话请求通过后,服务器端和客户端进行信息的交互
第一阶段:TCP三次握手版本协商过阶段:
目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本。
服务端默认已经开启ssh服务,打开了22号端口,等待客户端来连接
服务器向客户端发送第一个报文: 告诉了客户端使用了ssh版本以及软件信息
客户端收到报文之后,拿出服务器的ssh版本,看一下自己是否支持,如果支持使用该版本
第二阶段:协商算法和确定对称秘钥阶段
SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的算法:
对称加密:同一秘钥既可以进行加密也可以进行解密
优势:使用一个秘钥它的加密效率高一些(快一些)
缺陷:秘钥传输的安全性(在网络传输中不传输秘钥)
应用: 传输数据(数据的双向传输)
非对称加密:产生一对秘钥:公钥:公钥加密 私钥:私钥只能进行解密(不会进行网络传输)
缺陷:公钥的安全性 客户端去访问一个服务器(假设数据被我们的hacker拦截了,hacker发送了自己的公钥给客户端,客户端用 hacker的公钥对数据进行加密,然后hacker用自己的私钥进行解密。从而获取到用户传送的隐私(用户和密码)信息,进一步对服务器动机); 传送速度慢(效率低)
优势:安全性更高
应用: 单向的认证阶段(建立安全的连接保证后面对称加密的秘钥安全)
3、用户登录ssh服务器
第一步:关闭防火墙
[root@server ~]# systemctl stop firewalld 关闭防火墙(临时关闭,重启后任会启动)
[root@server ~]# systemctl disable firewalld 开机关闭防火墙(重启后不会自行启动)
第二步:查看ssh服务软件:
确认server端是否按照服务程序:[root@server ~]# rpm -qa |grep ssh
还可以通过进程查看:[root@server ~]# ps -aux |grep ssh
第三步:client如何发起远程链接请求
[root@server ~]# ssh root@server -p 22 (本地链接)
[C:\~]$ ssh root@192.168.17.128 (win远程链接)
ssh配置文件中的核心参数:
ssh服务程序的配置文件:
查看软件文件释放列表(大部分文件 ) [root@server ~]# rpm -ql (openssh-server) (软件名)
进入主要配置文件:[root@server ~]# vim /etc/ssh/sshd_config
Include:(该文件包Include之后路径的文件)Port 22 :表示该服务基于22号端口
注释特点:#号之后有空格代表:纯注释信息
#号之后没有空格直接根文字代表:该命令的一些相关参数,只不过暂为被启用
日志等级:
允许root用户远程链接:PermiltRootLogin yes
最大远程链接数:#MaxSessions 10
认证方式:
默认公钥验证方式:#PubkeyAuthentication yes
公钥文件的位置及路径: AuthorizedKeysFile .ssh/authorized_keys(用户家目录下的公钥文件)
是否开启密码验证:#PasswordAuthentication yes
远程链接时使用DNS服务:
可以使用文件传输:文件传输使用的协议为sftp
注意:修改完配置文件之后还需要重新运行sshd程序
[root@server ~]# systemctl restart sshd
此处发生报错:
可以通过命令systemctl status sshd 命令来查看报错
空白行之上为服务运行的状态以及进程信息,空白行之下为问题报错的具体时间以及报错信息。
此时我们要关闭seLinux安全服务:[root@server ~]# setenforce 0
setenforc 对网络安全服务做出控制
第二种验证方式:公钥验证
客户端:
主机生成非对称秘钥
公钥发送到服务器/root/.ssh/authorized_keys
服务端:
等待客户端发送请求,在内部通过非对称验证
4.举例说明
例一:Linux互连
服务器IP:192.168.17.128 24
客户端IP:192.168.17.129 24
客户端:第一次链接时需要公验证,需要输入yes;
此时 默认还需要输入密码验证,有一定的安全问题
为减少安全问题的出现,我们可以进行以下操作:
第一步:生成非对称秘钥(客户端生成秘钥)
[root@node1 ~]# ssh-keygen -t rsa
在文件路径/root/.ssh/下生成私钥文件id_rsa
id_rsa为非对称私钥 id_rsa.pub为非对称验证的公钥
注意:文件known_hosts存放着以链接过的服务器公钥
第二步:将客户端生成的id_rsa.pub文件发送到服务端
[root@node1 ~]# ssh-copy-id root@192.168.17.128
在服务端经行查看,传输是否成功
[root@server ~]# ll /root/.ssh/
图中authorized_keys就是传输被文件
此时我们在进行远程链接时就实现了免密登录;
例二:win作为客户端
第一步:客户端生成秘钥
进如Xshell点击 <工具> <新建用户密钥生成向导>
操作如图:
等待,选择下一步
不需要输入密码,直接选择下一步
将生成公钥放置在桌面上,以便于公钥传输
查看生成私钥
第二步:上传公钥文件到服务端。
第三步:检查传输是否成功:
由于公钥文件只能叫authorized_keys因此我们需要修改文件名
[root@node1 .ssh]# mv 'id_rsa_2048 (2).pub' authorized_keys
此时我们在win(客户端上进行远程连接)
[C:\~]$ ssh root@192.168.17.129
输入命令后在弹框里直接选择如图所示私钥然后不输入密码直接登陆