受欢迎的博客标签

How to Configure and Enable SSH on Debian 12

Published

How to Configure and Enable SSH on Debian 12

By default, Debian should come with the OpenSSH client pre-installed:

By default, The OpenSSH server  doesn’t come preinstalled on Debian.

 

Installing the OpenSSH Server

To install the OpenSSH server, run the following commands:

#Install SSH Server
sudo apt install openssh-server

sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh

output

root@debian12:/home/husband# sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled)
     Active: active (running) since Fri 2023-12-08 21:10:13 AKST; 3min 11s ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 3899 (sshd)
      Tasks: 1 (limit: 2244)
     Memory: 3.5M
        CPU: 74ms
     CGroup: /system.slice/ssh.service
             └─3899 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

Dec 08 21:10:13 debian12 systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
Dec 08 21:10:13 debian12 sshd[3899]: Server listening on 0.0.0.0 port 22.
Dec 08 21:10:13 debian12 sshd[3899]: Server listening on :: port 22.

 

ssh 认证方式

密码认证:最常见的SSH认证方式是使用用户名和密码。在这种情况下,用户输入用户名和密码以进行身份验证。密码认证是最简单的SSH认证方式之一,但容易受到暴力破解攻击。

公钥认证:公钥认证使用公钥和私钥对来进行身份验证。用户将自己的公钥存储在服务器上,每次连接时,服务器将向用户发送一个随机生成的挑战,用户需要使用自己的私钥对该挑战进行签名,以证明自己的身份。

主机基于公钥认证:这种认证方式是指服务器验证客户端的身份。在这种情况下,客户端将自己的公钥存储在服务器上,每次连接时,服务器将发送一个随机生成的挑战,客户端需要使用自己的私钥对该挑战进行签名,以证明自己的身份。

基于证书的认证:基于证书的认证与公钥认证类似,但它使用的是数字证书而不是公钥。数字证书包含了用户的公钥,由可信的证书颁发机构签发,以验证用户的身份。服务器会要求客户端提供证书,并验证证书的有效性。

Kerberos认证:Kerberos是一种网络认证协议,可用于SSH认证。在这种认证方式下,客户端向Kerberos服务器进行身份验证,并获取一个票证,然后将票证发送给SSH服务器,以进行SSH连接。

 

​ ssh两种认证方式的原理

基于密码的安全验证原理

是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录。具体过程如下:

1、客户端发送登录请求,ssh user@hostname
2、服务器接受请求,将服务器的公钥 ser_rsa.pub 发送给客户端
3、客户端输入密码,密码使用 ser_rsa.pub 加密后发送给服务器(敏感信息安全传输)
4、服务器接受加密后的密码,使用服务器私钥 ser_rsa 解密,匹配认证密码是否合法(如果合法!登录成功)

至此,身份认证通过,然后是交换会话密钥(对称加密)

5、客户端生成会话数据加密 sess_key,使用 ser_rsa.pub 加密后传输给服务器(会话密钥)
6、服务器获取到后使用 ser_rsa 解密,得到sess_key

使用会话密钥对之后传递的数据进行加密。注:使用对称加密效率高。

7、客户端和服务器通过 sess_key 进行会话数据安全传输

基于密钥的安全验证原理

***在认证之前,客户端需要将公钥 Ac 放到服务器上。***
##使用服务器的公钥密钥交换数据,得到q

1、客户端发送登录请求,ssh user@hostname
2、服务器接受请求,将服务器的公钥 As 发送给客户端
   服务器生成会话ID(session id),设为 p,发送给客户端。
3、客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
  客户端将 r 用 As 进行加密,结果发送给服务器。
4、服务器用 Bs 进行解密,获得 r。
  服务器进行 r xor p 的运算,获得 q。

至此,服务器和客户端都知道了会话密钥q,以后的传输数据都将被 q 加密。

##使用客户端的公钥密钥传交换数据,确认身份,避免中间人攻击。

5、服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
6、客户端使用 Bc 解密 S(x) 得到 x
   客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
   客户端将 n(q+x) 发送给服务器
7、服务器计算 q + x 的 md5 值 m(q+x)
   服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功。

至此,服务器和客户端认证通过,可以使用会话密钥进行加密和解密传输

8、客户端和服务器通过 q 进行会话数据安全传输

 

source:https://blog.csdn.net/marywang56/article/details/83621738