LinuxOpenSSH服务

138 阅读6分钟

远程登陆

在实际生产中,我们总会使用到一些远程的服务管理
随着时间推移,我们在Linux时会学习到使用字符远程管理
下面来了解一下有关OpenSSH的知识:
OpenSSH(Open Secure Shell)是一组用于在Linux系统上进行安全的远程登录和数据通信的开源软件
它包括 ssh 命令,用于远程连接到服务器,以及 sshd 命令,即运行在远程服务器上的守护进程

在Linux系统中管理OpenSSH的主要任务包括安装、配置、开启/关闭服务、以及创建和管理SSH密钥

  1. 安装: 在大多数Linux发行版上,OpenSSH已经预安装。如果没有,你可以使用包管理器安装它
  • 对于基于Debian的系统,如Ubuntu,运行: sudo apt-get install openssh-server
  • 对于基于RHEL的系统,如CentOS和Fedora,运行: sudo yum install openssh-server
  1. 配置: OpenSSH的主要配置文件位于/etc/ssh/sshd_config
    可以使用文本编辑器编辑这个文件来设置或修改许多配置选项,例如:
  • 更改默认端口:Port 22,(例如,将其更改为Port 2222
  • 禁止root登录:将PermitRootLogin设置为no
  • 仅允许特定用户登录:添加或修改以下行:AllowUsers username1 username2

保存更改后,需要重启SSHD服务以便应用新的配置

  1. 开启/关闭服务:
  • 启动OpenSSH服务:sudo systemctl start sshd
  • 停止服务:sudo systemctl stop sshd
  • 重新启动服务:sudo systemctl restart sshd
  • 检查服务状态:sudo systemctl status sshd
  • 设置为开机自动启动:sudo systemctl enable sshd
  • 取消开机自动启动:sudo systemctl disable sshd
  1. 创建和管理SSH密钥: SSH密钥对用于在客户端和服务器之间建立安全连接。SSH密钥对包括一个公钥和一个私钥
  • 生成一个新的SSH密钥对:运行ssh-keygen命令,会提示输出文件路径以及添加口令保护私钥
    默认情况下,生成的密钥存储在~/.ssh目录下
  • 配置服务器以接受连接:将客户端的SSH公钥复制到服务器的~/.ssh/authorized_keys文件。可以使用ssh-copy-id命令完成此操作
    例如:ssh-copy-id username@remote-host

基于密码认证的SSH

SSH创建远程交互shell,结束时使用exit
ssh 命令格式
ssh REMOTEHOST [COMMAND] 远程主机的地址
ssh USERAREMOTEHOST [COMMAND] 用户名+主机名
下面举一个例子来说明用法:
image.png
我们使用ssh workstation命令连接workstation主机
但是发现报了一个无法成功连接该主机的错误
出现这个错误的原因主要是因为
该workstation主机未启动,所以先要先启动该主机,才能进行连接
image.png
现在连接成功了,可以看到我们的前导符已经变成了student@workstation了
这样我们就可以控制远程主机了


免密登录

在SSH登录过程中,存在着两种方式进行验证:

  • 密码验证
  • 密钥验证
    在密码和密钥同时存在的时候,密钥优先
    在默认情况下,先使用密钥登录
    对于密钥而言,存在着两种:
  • 公钥 相当于锁头,用于验证私钥

可以安全地分享给其他人
它用于加密数据或验证签名
公钥用于加密消息,只能用与其对应的私钥解密
公钥一般是由私钥派生生成的,因此可以在安全地分发给其他人用于加密通信和验证签名

  • 私钥 相当于钥匙,认证凭据

私钥相对于公钥是机密的,只能由密钥所有者保持私密
私钥用于解密已加密的消息或生成数字签名
私钥永远不应该泄露给他人,因为掌握私钥可以解密公钥加密的消息或伪造数字签名

我们可以通过ls ~ /ssh命令来查看当前客户端的私钥 image.png
id_rsa即为私钥
当删除这个文件后,我们再进行主机连接,则需要密码
我们也可以使用ssh-keygen命令生成密钥
image.png
我们可以先将.ssh/内的所有连接配置文件删除
之后我们再次连接workstation主机(默认不允许root连接)
image.png
可以看到这里出现了第一次登陆主机的提示
我们选择yes后即可成功登录
但是此时我们的密钥对已经被删除
此时我们便可以使用ssh-keygen
image.png
再确认了文件地址存放密钥对,确认了密钥密码之后便成功生成
我们再重新使用ls .ssh/命令来查看即可发现文件重新生成
image.png
known_host文件内保留的是主机指纹,证明登陆过的主机信息都保留在里面
如果我们想要实现免密登录
我们需要将公钥拷贝到目标主机中
使用ssh-copy-id USERAREMOTEHOST命令
默认需要将公钥拷贝至~/.ssh/authorized keys文件夹中

对称加密与非对称加密

对称加密和非对称加密是两种常见的加密方式,它们有以下不同:

  1. 密钥数量:对称加密只使用一个密钥,加密和解密都需要使用该密钥;非对称加密则使用一对密钥,即公钥和私钥
  2. 密钥保护:对称加密密钥需要在两个通信方之间安全地交换;而非对称加密的公钥可以通过明文传输,而私钥必须被妥善保管,不能泄露给其他人
  3. 加密速度:对称加密算法通常比非对称加密算法要快,因为它们只需一个密钥就可以加密或解密数据;而非对称加密算法需要使用复杂的数学函数来加密和解密,速度较慢
  4. 可扩展性:对称加密对于使用相同密钥的通信双方数量有限;反之,非对称加密可以在不泄露私钥的情况下,任意地通过公钥加密信息,因为私钥只在接收方处解密
  5. 安全性:对称加密的主要安全威胁是密钥的安全性;如果密钥泄露了,那么加密信息的安全就受到危害了;而非对称加密则能够提供更好的安全保障,因为它采用了复杂的加密方法,即使公钥暴露了也不会影响加密信息的安全

在实际应用中,通常使用对称加密算法来加密数据,因为对称加密算法的加密速度比非对称加密算法更快,同时对称加密算法提供的安全性也足够满足绝大部分安全需求