Popular blog tags

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