目录
一、ssh协议定义及特点
(一)ssh协议简介
(二)ssh协议的主要特点
二、ssh传输原理
三、sshd服务
(一)配置文件
(二)基本用法
1.直接连接
2.连接指定用户
3.指定端口号
4.黑白名单
(三)基于密钥验证
1.创建密钥
2.传送到远程主机
3.登录验证
一、ssh协议定义及特点
(一)ssh协议简介
SSH(Secure Shell)协议是一种网络协议,主要用于在不安全的网络中提供安全的远程登录和命令执行环境。SSH协议基于客户端-服务器模型设计,主要目的是为用户提供数据加密、身份验证以及消息完整性检查等功能,确保用户能够在网络上安全地访问另一台计算机。
SSH(Secure Shell):主要用于Linux和Unix系统上的远程登录和命令行控制,同时也可用于文件传输和其他安全网络服务。
(二)ssh协议的主要特点
1.数据加密:所有通过SSH传输的数据都经过加密处理,包括命令行输入、输出结果和任何交互式会话内容,防止了中间人攻击窃取或篡改通信数据。
2.数据压缩:将传输数据压缩,提高传输速度
3.身份验证:支持多种身份验证机制,包括密码认证、公钥认证等。其中公钥认证通常结合私钥和公钥对使用,提供了较高的安全性。
4.安全隧道:SSH可以建立端口转发(也称为隧道),允许将本地计算机上的端口流量通过加密的SSH连接转发到远程主机的相应端口,用于保护非安全服务的通信。
5.文件传输:虽然SSH协议本身并不直接负责文件传输,但可以通过SCP(Secure Copy)或SFTP(SSH File Transfer Protocol)等工具利用SSH的安全连接进行文件的安全传输。
二、ssh传输原理
SSH(Secure Shell)协议中的公钥交换是其安全性的关键组成部分之一。在SSH连接建立过程中,客户端和服务器端通过非对称加密算法进行密钥交换,确保了会话的机密性和完整性。
最后双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密。公钥可任意分发但不能用于解密,私钥只有所有者持有且可用于解密由相应公钥加密的数据,从而保证了密钥交换的安全性。
三、sshd服务
(一)配置文件
来了解一下基本的文件
[root@localhost .ssh]#rpm -qc openssh-server #服务名称叫做sshd,软件包名称叫openssh
/etc/pam.d/sshd #sshd服务的PAM认证模块
/etc/ssh/sshd_config #本机作为服务端的sshd服务的配置文件
/etc/sysconfig/sshd #虽然许多SSH守护进程的详细配置是在/etc/ssh/sshd_config文件中完成的,但该文件也可以用来覆盖或补充一些启动参数[root@localhost ~]#ls /etc/ssh/
moduli #这个文件包含了Diffie-Hellman密钥交换协议使用的素数模数集合,用于提供足够的强度和效率以抵抗中间人攻击。
ssh_config #本机作为客户端的配置文件
ssh_host_ecdsa_key #ecdsa算法生成的公钥
ssh_host_ecdsa_key.pub #ecdsa算法生成的公钥
ssh_host_ed25519_key #ed25519算法生成的公钥
ssh_host_ed25519_key.pub #ed25519算法生成的公钥
ssh_host_rsa_key.pub #rsa算法生成的公钥
ssh_host_rsa_key #rsa算法生成的公钥
(二)基本用法
使用ssh 命令
1.直接连接
默认连接root用户
输入 ssh IP地址
第一次和服务端机器连接时,会询问是否要验证公钥,同意或后就会自动获取服务端的公钥
如何去验证是否连接到正确的服务机器,可以查看服务端的公钥
可以发现,两个公钥是完全一样的,所以我们连接的就是指定的机器
2.连接指定用户
ssh 用户名@IP地址
也可以使用-l 指定用户名
3.指定端口号
sshd服务默认使用的端口号是22,如果不是端口号,需要-p 指定端口号
将服务端的端口号修改成非22端口
vim /etc/ssh/sshd_config
修改之后重启服务 systemctl restart sshd ,使配置文件生效
再使用客户机去连接就需要指定端口号了
4.黑白名单
白名单:默认拒绝所有,只有白名单允许的人才可以访问
黑名单:默认允许所有,只有黑名单里的用户才可以访问
修改服务端的服务配置文件:vim /etc/ssh/sshd_config
禁止的IP地址上的所有用户都无法远程登录本机
白名单允许的,只能远程登录本机的kysw用户
(三)基于密钥验证
使用密码验证终归会存在着被骇客暴力破解或嗅探监听的危险,其实也可以让 ssh 服务基于密钥进行安全验证 (可无需密码验证)。
在实验之前,将之前设置的黑白名单删除,或者使用新的客户机实验
1.创建密钥
也可以指定算法类型:输入 ssh-keygen -t ed25519 (ecdsa)
2.传送到远程主机
在服务端查看已经收到的密钥文件,会生成一个authorized_keys的文件
3.登录验证
这个时候我们再登录的话,会使用密钥文件进行验证
如果不想验证密码,使用免交互登录
先输入ssh-agent bash 将这个命令交给bash去管理
再输入ssh-add 是将用户的私钥添加到运行中的 ssh-agent中,这样在后续的SSH连接过程中,就不需要每次都手动输入私钥的密码了。一旦私钥被添加到ssh-agent 中,它会暂时保存解密后的私钥以供后续使用。
重启机器后就会失效,需要重新进行上述操作,再次输入密码
或者修改服务端配置文件
这样,其它没有密钥的客户端是无法连接本机的,只有有密钥的客户机可以连接