环境

VMware Workstation 14

系统

Server:

——Kali-linux-2023.1(IP:192.168.20.101)

Client:

——Centos-Stream-9-latest(IP:192.168.20.102)

说明

什么是SSH

SSH 为 Secure Shell 的缩写,是建立在应用层基础上的安全协议。SSH是较为可靠的专为远程登录会话和其他网络服务提供安全性的协议。利用用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

OpenSSH 服务是 SSH 协议的免费开源实现,可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rdp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。

通过使用SSH,你可以把所有传输的数据进行加密,这样可以较好地抑制”中间人”这种攻击,也可能够防御DNS欺骗和IP欺骗。

使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。

在前文中,我们已经介绍了使用ssh命令远程连接服务器的方法。接下来我们将介绍使用其传输文件的命令。

scp命令

I.将本机文件复制到远程服务器上(上传)

命令格式:scp 【本地文件路径】 [username]@[主机IP]:[拷贝的目录]

II.将远程服务器上的文件复制到本机(下载)

命令格式:scp [username]@[主机地址]:[服务器上文件路径] [本地文件路径]

安装

I.默认openssh已经安装与CentOS中,无须额外安装。

II.查看服务状态。

可使用systemctl命令查看和设置openssh服务的状态。

1
2
3
systemctl status sshd.service    #查看ssh状态
systemctl start sshd.service #启动ssh服务
systemctl stop sshd.service #停止ssh服务

注意:如果服务关闭,则无法远程登录服务器。

III.配置免密码(公私钥认证)登录

ssh服务主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录。

下面我们来解释一下公私钥的概念:

密码体系从加密和解密方面来分类的话,可以分为对称加密和非对称加密。

  • 对称加密:加密和解密使用的密钥是同一个。
  • 非对称加密:加密和解密使用的密钥是不同的,采用两个密钥。
  • 对称加密解密的速度比较快,非对称加密和解密花费的时间长、速度相对较慢。
  • 对称加密的安全性相对较低,非对称加密的安全性较高。

公私钥体系既是常见的非对称加密,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。其特性为:

  • 一个公钥对应一个私钥。
  • 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
  • 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
  • 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

ssh服务通过密码进行登录,主要流程为:

  1. 客户端连接上服务器之后,服务器把自己的公钥传给客户端
  2. 客户端输入服务器密码通过公钥加密之后传给服务器
  3. 服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录

ssh服务公钥登录,主要流程为:

  1. 客户端生成RSA公钥和私钥
  2. 客户端将自己的公钥存放到服务器
  3. 客户端请求连接服务器,服务器将一个随机字符串发送给客户端
  4. 客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
  5. 服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。

使用公私钥登录,可以避免每次登录服务器都输入密码。下面我们来实际操作此流程。

linux下可以用用ssh-keygen命令生成公钥/私钥对。

若有机器A,B。现想A(服务端)通过ssh免密码登录到B(客户端)。 在A机(服务端)下使用ssh-keygen命令生成公钥/私钥对。在执行此命令后将在/root/.ssh目录下将生成id_rsaid_rsa.pub文件。

进入/root/.ssh文件夹可以看到如下密钥文件

1
2
id_rsa        #私钥
id_rsa.pub #公钥

在B机器(客户端)开启证书的验证,默认是开启的。 若没有开启可修改ssh配置文件,vi /etc/ssh/sshd_config,将文本中有关PubkeyAuthenticationAuthorizedKeysFile的条目修改为如下内容:

1
2
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

随后重启服务 systemctl restart sshd.service

A机器(服务端)使用ssh-copy-id [user]@[host]命令拷贝密钥文件到B机器(客户端),随后使用服务端去访问客户端。

而如果我们此时使用另外一台主机登录,我们会发现可以通过密码的方式登录。我们可以修改配置文件/etc/ssh/sshd_config中的第70行PasswordAuthentication 值为no,可以禁止使用密码的方式。



转载于农夫安全