SSH 安全外壳协议

目录

 一 、SSH协议

        1. SSH远程连接     

        2.常用加密算法

                对称加密算法

                非对称加密算法

         3.   安全验证           

        基于口令的安全验证

       基于密匙的安全验证

二 、 SSH服务

        1. 配置文件   /etc/ssh/sshd_config

        2.  ssh-keygen常用参数

        3.   linux客户端通过秘钥登录linux服务端 的 root用户


 一 、SSH协议

       

        SSH(Secure Shell Protocol )是一种加密的网络安全协议,可在不安全的网络环境中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器的的连接。

        SSH最常见的用途是远程登陆系统,传输命令行界面和远程执行命令。

        

        1. SSH远程连接     

        

        远程的主机基于网络通过标准的远程协议远程登录到对应的主机,类似于直接在本地端操作

在SSH远程连接的过程中,为实现安全连接,客户端与服务器要经历五个阶段。

        1.版本协商阶段:

通过版本协商,确定使用的版本。

开启ssh服务,打开22端口,等待客户端

服务器发送报文告诉客户端,ssh版本和软件信息

客户端若支持,则使用该版本

        2.密钥和算法协商阶段

ssh支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的算法

        3.认证阶段

ssh客户端向服务器发起认证请求,服务器对客户端进行认证

        4.会话请求阶段

认证通过之后,客户端向服务器发起会话请求

        5.交互会话阶段

会话请求通过之后,客户端和服务端进行信息的交互

        2.常用加密算法

                对称加密算法

        对称加密算法就是整个加密解密过程使用同一个密钥,并且可以密文-密钥反推出原文。对称加密算法的优点是速度快,但是安全性相对于非对称加密来说低。

        使用对称加密,分享信息的各个个体之间都需要分享这个密钥,只要其中一个人密钥被盗窃了,那么整体加密的信息将都被破解了。

1.DES        特点:数据加密标准,速度较快,适用于加密大量数据的场合

2.3DES      特点:基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高

3.AES        

                非对称加密算法

        非对称加密算法采用了两个密钥加密,一般是公钥加密,私钥解密,所以非对称算法加密的数据可以放心在公网传播。非对称加密算法的优点是安全性高,但是速度相对于对称加密来说慢。

        非对称加密使用一对密钥,即公钥和私钥,且二者成对出现。私钥被自己保存,不能对外泄露。公钥指的是公共的密钥,任何人都可以获得该密钥。用公钥或私钥中的任何一个进行加密,用另一个进行解密。被公钥加密过的密文只能被私钥解密

1.RSA        特点:安全性基于大整数分解问题,其密钥长度通常为1024位或2048位

2.DSA        特点:安全性基于离散对数难题,用于验证数字文档的真实性和完整性

3.ECC        特点:安全性基于椭圆曲线密码学,具有更高的安全性和更短的密钥长度更适合                               在资源受限的环境下使用,比如物联网设备、移动设备等

         3.   安全验证           

        从客户端来看,SSH提供两种级别的安全验证。

        基于口令的安全验证

只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

       基于密匙的安全验证

需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。

第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒 。

二 、 SSH服务

        1. 配置文件   /etc/ssh/sshd_config

        首先,我们看看Linux系统中SSH服务的配置文件

在RHEL9.1版本中大概有130行,比较多,下面是一些平常可能用到的

                        /etc/ssh/sshd_config

#Port 22 
#监听端口,默认监听22端口 【默认可修改】

#AddressFamily any 
#IPV4和IPV6协议家族用哪个,any表示二者均有

#ListenAddress 0.0.0.0 
#指明监控的地址,0.0.0.0表示本机的所有地址 【默认可修改】

#ListenAddress :: 
#指明监听的IPV6的所有地址格式

HostKey /etc/ssh/ssh_host_rsa_key 
# rsa私钥认证 【默认】

#HostKey /etc/ssh/ssh_host_dsa_key 
# dsa私钥认证

HostKey /etc/ssh/ssh_host_ecdsa_key 
# ecdsa私钥认证

HostKey /etc/ssh/ssh_host_ed25519_key 
# ed25519私钥认证

SyslogFacility AUTHPRIV 
#当有人使用ssh登录系统的时候,SSH会记录信息,信息保存在/var/log/secure里面

#LoginGraceTime 2m 
#登录的宽限时间,默认2分钟没有输入密码,则自动断开连接

#PermitRootLogin yes 
#是否允许管理员远程登录,'yes'表示允许

#MaxAuthTries 6 
#最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码

#MaxSessions 10 
#允许的最大会话数

AuthorizedKeysFile .ssh/authorized_keys 
#选择基于密钥验证时,客户端生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面

PasswordAuthentication yes 
#是否允许支持基于口令的认证

ChallengeResponseAuthentication no 
#是否允许使用键盘输入身份验证,也就是xshell的第三个登录方式

#UseDNS yes 
#是否反解DNS,如果想让客户端连接服务器端快一些,这个可以改为no

Subsystem sftp /usr/libexec/openssh/sftp-server 
#支持 SFTP ,如果注释掉,则不支持sftp连接

AllowUsers user1 user2 
#登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录

        2.  ssh-keygen常用参数

        

        ssh-keygen命令用于生成、管理和转换认证密钥,它是SSH客户端程序的一部分。ssh-keygen可以生成RSA密钥对用于SSH协议版本1和版本2协议。     

下面是ssh-keygen的一些常见参数:

 -  t 指定密钥类型(RSA  DSA)

 -  f           

指定密钥文件名        默认为当前用户home路径下的.ssh隐藏目录

默认密钥文件名以id_rsa开头。如果是root用户, 则在/root/.ssh/id_rsa, 若为其他用户, 则在/home/username/.ssh/id_rsa

 -  C添加注释
-   N设置新的密码

        3.   linux客户端通过秘钥登录linux服务端 的 root用户

1.生成密钥对 - - -客户端

[root@localhost ~]# ssh-keygen -t RSA

Generating public/private RSA key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:LCxPlDFpovx7HnGXPn0ULvGArz6yrzzrvfpeeZ4eHZE root@localhost.localdomain

The key's randomart image is:

+---[RSA 3072]----+

|      o.         |

|    . o+   .    .|

| . . oo   . o .E |

|  o  o .   o = ..|

|   .. = S o o +. |

|    .+ + o o + ..|

|     .o   + + + .|

|    . .ooo.o + o |

|     o..B@Bo .+  |

+----[SHA256]-----+

2.查看保存密钥的目录

[root@localhost ~]# ll  /root/.ssh

total 12

-rw-------. 1 root root 2610 Oct 15 22:14 id_rsa

-rw-r--r--. 1 root root  580 Oct 15 22:14 id_rsa.pub

3.发送公钥到要连接的服务器主机(192.168.138.132)

[root@localhost ~]# ssh-copy-id -i 192.168.138.132

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

#下面输入服务器的root用户密码

root@192.168.138.132's password:

4.在服务器相同目录找到公钥

[root@localhost ~]# ll /root/.ssh

total 4

-rw-------. 1 root root 580 Oct 15 22:25 authorized_keys

5.此时我们就可以直接在客户端的 终端使用SSH连接到服务器了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值