ssh 安全外壳(Secure Shell)
SSH
SSH常被称作安全外壳(Secure Shell),它是互联网上访问网络设备与服务器的主要协议之一
2.SSH默认情况下通过端口 22 运行;不过很容易更改这个端口。
3.SSH是一种极为可靠的通信协议,在传递经过双重加密的安全信息的过程中,在保障数据传输过程中的机密性和数据完整性方面发挥着重要作用。尽管互联网作为非安全的网络通道可能带来安全隐患,但SSH通过其独特的机制确保了在如此脆弱的网络环境下仍能提供高度的安全性。
当通过SSH协议进行加密通信时,这些数据将无法被解压或读取。因此,在公共网络上传输的密码变得更加安全。
SSH还使用公钥作为身份验证手段来访问服务器;这种方法代表了一种先进方案;通过这种方法我们能够确保了系统运行的安全性。
SSH主要用于广泛使用的操作系统家族中,在包括Unix系列操作系统、Solaris操作系统等系统中都有应用;其中具体包括Unix系统族(如FreeBSD)、Solaris服务器操作系统以及Red HatLinux平台(如CentOS)、Canonical企业Linux(如 Ubuntu企业版)等多种主流操作系统的应用。
由两部分组成的ssh服务端包括openssh用于实现基于SSH协议的通信功能以及openssl负责实现加密通信机制等组件
该应用程序可以通过XSHELL、Securecrt或Mobaxterm等多种工具实现SSH连接,并支持SFTP功能。
ssh建立连接的完整过程

客户端通过TCP三次握手与服务器SSH端口建立TCP连接。
服务器基于已建立的连接向客户端发送一个包含SSH版本信息的报文,其格式为"SSH-<SSH协议号>",其中软件版本号主要用于调试用途
当客户端获取 versions 信息时,在以下两种情况中采用相应的策略:若 server 所用协议 versions 小于 local 服务器当前 versions(但 client 可以兼容该 low versions 的 SSH 协议),则采用该 low versions 进行通信;否则会采用自身的 versions 数值进行通信操作。
客户端会将自己的选择发送给服务器。当客户端所选的版本编号高于服务器当前运行的版本时,则不会被支持。从而决定了是否能够完成SSH连接的过程。
如果协商成功,则进入密钥和算法协商阶段。
2)密钥和算法协商阶段:
服务器端和客户端各自通过发送算法协商报文传递给对端,在报文中分别携带自己支持的公钥算法选择方案、加密技术选择方案以及认证码设置方案等信息
- 和版本协商阶段一样,在服务器端设备与客户端系统之间依据各自支持的算法进行评估与选择后确定采用的各项算法。
3.通过采用Diffie-Hellman密钥交换算法,在服务器端与客户端之间利用主机的密钥参数设置生成共享密码与标识符;这些会话密码则用于对通信双方的所有数据进行加密与解密操作;同时,在认证环节中使用的是会话标识符
3)认证阶段:
客户端尝试向服务器发送认证请求;在该请求数字中包含了用户名字段、采用某种验证方案,并且包含了密码或密钥信息。
2.客户端被服务器端验证,在认证请求被拒绝时(即当认证请求被拒绝时),系统会将失败信息传递给客户端。该信息将包括一个重试方法的清单,并附带一个重试方法的清单。
客户端再次尝试其中一种支持的认证方法来完成认证流程。当达到指定的最大次数时服务器将终止连接;如果成功则过程结束。
SSH支持的两种认证方式:
客户端采用用户名和密码作为身份验证手段,在传输过程中将经过会话密钥加密处理后的用户名称及密码被传输至服务器端。经解密处理后与系统存储的相应信息进行比对,并根据比对结果向客户端输出验证成功或失败的反馈信息。
在密钥认证过程中主要依靠数字签名来进行验证。目前 RSA 和 DSA 两种算法均可应用于数字签名的实现中。客户端将用户名、私有公钥及相关算法信息用于与服务器建立身份验证连接。
4)会话请求阶段:
1.服务器等待客户端请求。
2.认证完成后,客户端想服务器发送会话请求。
服务器接收并处理客户端的请求,在完成之后会发送SSH_SMSG_SUCCESS报文给客户端以表示交互会话的建立。若该请求未被成功处理,则服务器将返回SSH_SMSG_FAILURE报文,并告知系统状态为SHUTDOWN以及错误信息,请检查相关日志以便排查问题。
5)交互会话阶段:
1.客户端将要执行的命令加密发送给服务器。
2.服务器收到后,解密命令,执行后将结果加密返回客户端。
3.客户端将返回结果解密后显示到终端上。
SSH数据传输过程中大部分过程均采用对称密钥进行加密。仅限于建立连接初期以及身份验证握手环节时会采用非对称加密。
ssh****两种验证级别:opensshopenssl
从客户端来看,SSH提供两种级别的安全验证。
第一种级别(基于口令的安全验证)
一旦你知道自己的账号以及密码就能接入远程主机所有的数据传输都会采用加密技术但无法确保你所连接的实际服务器正是你所意图连接的目标服务器可能存在其他服务器假装成目标服务器进行攻击即成为中间人的攻击目标
第二种级别(基于密匙的安全验证)(客户端验证服务器)
您必须为自己配对密匙,并将公共密匙放置于需访问的服务器上。当您试图连接至SSH服务器时,默认情况下客户端软件会向其发送请求以进行安全认证。当服务器接收到请求后,在其主目录下搜索你的公共密匙,并将此"挑战"(challenge)加密后传输给客户端软件。客户端接收到此挑战后即可利用您的私人密钥解密,并将其传输回给该服务器。
常见的远程管理工具方式:
RDP(remote desktop protocal )协议,windows远程桌面管理(图形界面) 3389 端口
telenet CLI界面下远程管理,几乎所有操作系统都有(内容明文传输) 23 端口
基于命令行界面的SSH远程管理工具,在几乎所有的操作系统中都支持内容加密传输。在类Unix系统中主要的远程管理方式是通过使用端口22进行通信,并且主要涉及的操作系统包括Linux、BSD和macOS等。
RFB(Remote Frame Buffer)是一种基于网络传输的图形化远程管理协议,在Linux、Unix及MacOS等操作系统的应用中广泛使用。
其使用的协议是VNC(Virtual Network Computing)。这有助于实现高效的图形界面远程管理和监控功能。
5900端口
示例
openssh-server 服务端包
openssh-client 客户端包
/etc/ssh/sshd_config 配置文件
sftp 是ssh子模块 端口 也是22
建议服务端自定义端口,可以防止SSH登录入侵
更改端口
systemctl restart sshd

比如我将端口改为9999
重启 连接

拒绝root用户登录
vim /etc/ssh/sshd_config
PermitRootLogin yes 改为 no

重启 连接

可以使用ssh 用户名@ip 连接

允许特定用户ssh登录,其他用户无法登录
vim /etc/ssh/sshd_config
在最后添加允许登录的用户



免密登录
两台虚拟机 分别是192.168.199.129和192.18.199.135
/root/.ssh/ 用户的密钥在用户家目录下.ssh文件夹里 例root用户 /root/.ssh/
用 ssh-keygen -t RSA 配置成 RSA 加密方式快速生成公钥文件

生成编号为129的公钥并发送给用户ID 135后,系统将请求用户输入其密码以验证身份。操作完成前请确保已正确配置私有密钥,否则将导致授权失败。(请确认:若无明确指定绝对路径,则该公钥文件仅能在当前目录中使用)

此时再登录135不需要输入密码就表示成功

win10连接linxu
在xshell中依次选择工具→新建用户密钥,并创建该密钥;随后通过xftp将该密钥传输至Linux系统,并将其命名为authorized_keys。
xshell 里面新建连接 使用public key 验证 输入用户登录
telnet 连接
dnf install telnet-server
xshell 选择telnet 连接
systemctl start telnet.socket
打开软件新建连接选择telnet连接
输入用户 和 密码 连接
