ssh远程登录协议

目录

一、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连接建立过程中,客户端和服务器端通过非对称加密算法进行密钥交换,确保了会话的机密性和完整性。

ssh远程登录协议_第1张图片

最后双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密。公钥可任意分发但不能用于解密,私钥只有所有者持有且可用于解密由相应公钥加密的数据,从而保证了密钥交换的安全性。

三、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地址

ssh远程登录协议_第2张图片

第一次和服务端机器连接时,会询问是否要验证公钥,同意或后就会自动获取服务端的公钥

ssh远程登录协议_第3张图片

如何去验证是否连接到正确的服务机器,可以查看服务端的公钥

ssh远程登录协议_第4张图片

可以发现,两个公钥是完全一样的,所以我们连接的就是指定的机器

2.连接指定用户 

ssh   用户名@IP地址

ssh远程登录协议_第5张图片

也可以使用-l 指定用户名

3.指定端口号

sshd服务默认使用的端口号是22,如果不是端口号,需要-p  指定端口号

将服务端的端口号修改成非22端口

vim /etc/ssh/sshd_config

ssh远程登录协议_第6张图片

修改之后重启服务 systemctl restart sshd ,使配置文件生效

再使用客户机去连接就需要指定端口号了

4.黑白名单

白名单:默认拒绝所有,只有白名单允许的人才可以访问

黑名单:默认允许所有,只有黑名单里的用户才可以访问

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

ssh远程登录协议_第7张图片

禁止的IP地址上的所有用户都无法远程登录本机

ssh远程登录协议_第8张图片

白名单允许的,只能远程登录本机的kysw用户

ssh远程登录协议_第9张图片

(三)基于密钥验证

使用密码验证终归会存在着被骇客暴力破解或嗅探监听的危险,其实也可以让 ssh 服务基于密钥进行安全验证 (可无需密码验证)。

在实验之前,将之前设置的黑白名单删除,或者使用新的客户机实验

1.创建密钥

ssh远程登录协议_第10张图片

也可以指定算法类型:输入  ssh-keygen  -t  ed25519 (ecdsa)

2.传送到远程主机

ssh远程登录协议_第11张图片

在服务端查看已经收到的密钥文件,会生成一个authorized_keys的文件

ssh远程登录协议_第12张图片

3.登录验证

这个时候我们再登录的话,会使用密钥文件进行验证

ssh远程登录协议_第13张图片

如果不想验证密码,使用免交互登录

先输入ssh-agent  bash 将这个命令交给bash去管理

再输入ssh-add  是将用户的私钥添加到运行中的 ssh-agent中,这样在后续的SSH连接过程中,就不需要每次都手动输入私钥的密码了。一旦私钥被添加到ssh-agent 中,它会暂时保存解密后的私钥以供后续使用。

ssh远程登录协议_第14张图片

重启机器后就会失效,需要重新进行上述操作,再次输入密码

ssh远程登录协议_第15张图片

或者修改服务端配置文件

ssh远程登录协议_第16张图片

这样,其它没有密钥的客户端是无法连接本机的,只有有密钥的客户机可以连接

你可能感兴趣的:(ssh,运维)