Linux之Openssh服务

环境
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 | systemctl status sshd.service #查看ssh状态 |
注意:如果服务关闭,则无法远程登录服务器。
III.配置免密码(公私钥认证)登录
ssh服务主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录。
下面我们来解释一下公私钥的概念:
密码体系从加密和解密方面来分类的话,可以分为对称加密和非对称加密。
- 对称加密:加密和解密使用的密钥是同一个。
- 非对称加密:加密和解密使用的密钥是不同的,采用两个密钥。
- 对称加密解密的速度比较快,非对称加密和解密花费的时间长、速度相对较慢。
- 对称加密的安全性相对较低,非对称加密的安全性较高。
公私钥体系既是常见的非对称加密,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。其特性为:
- 一个公钥对应一个私钥。
- 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
- 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
- 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
ssh服务通过密码进行登录,主要流程为:
- 客户端连接上服务器之后,服务器把自己的公钥传给客户端
- 客户端输入服务器密码通过公钥加密之后传给服务器
- 服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录
ssh服务公钥登录,主要流程为:
- 客户端生成RSA公钥和私钥
- 客户端将自己的公钥存放到服务器
- 客户端请求连接服务器,服务器将一个随机字符串发送给客户端
- 客户端根据自己的私钥加密这个随机字符串之后再发送给服务器
- 服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。这样就不用使用密码了。
使用公私钥登录,可以避免每次登录服务器都输入密码。下面我们来实际操作此流程。
linux下可以用用ssh-keygen命令生成公钥/私钥对。
若有机器A,B。现想A(服务端)通过ssh免密码登录到B(客户端)。 在A机(服务端)下使用ssh-keygen命令生成公钥/私钥对。在执行此命令后将在/root/.ssh目录下将生成id_rsa和id_rsa.pub文件。
进入/root/.ssh文件夹可以看到如下密钥文件
1 | id_rsa #私钥 |
在B机器(客户端)开启证书的验证,默认是开启的。 若没有开启可修改ssh配置文件,vi /etc/ssh/sshd_config,将文本中有关PubkeyAuthentication和AuthorizedKeysFile的条目修改为如下内容:
1 | PubkeyAuthentication yes |
随后重启服务 systemctl restart sshd.service
A机器(服务端)使用ssh-copy-id [user]@[host]命令拷贝密钥文件到B机器(客户端),随后使用服务端去访问客户端。
而如果我们此时使用另外一台主机登录,我们会发现可以通过密码的方式登录。我们可以修改配置文件/etc/ssh/sshd_config中的第70行PasswordAuthentication 值为no,可以禁止使用密码的方式。
转载于农夫安全











