linux笔记(SSH)

一、基本概念

  • 定义
    • SSH 是一种网络协议,用于在不安全的网络上安全地进行远程登录和其他网络服务。它通过加密技术提供了安全的通信通道,确保数据传输的保密性、完整性和认证性。
  • 主要用途
    • 远程登录:允许用户通过网络连接到远程服务器,就像在本地终端操作一样。例如,系统管理员可以从自己的办公电脑 SSH 到数据中心的服务器进行管理操作。
    • 文件传输:支持安全的文件传输,如使用 SCP(Secure Copy)和 SFTP(SSH File Transfer Protocol)。这在备份数据、部署网站文件等场景中非常有用。
    • 端口转发:可以将本地端口映射到远程服务器端口或者反之,用于访问受限制的网络资源或安全地访问内部服务。

二、工作原理

  • 加密算法
    • 对称加密:SSH 使用对称加密算法(如 AES)来加密传输的数据。在通信开始时,双方会协商一个密钥用于加密和解密数据。
    • 非对称加密:利用公钥和私钥对来进行身份认证。服务器的公钥发送给客户端,客户端用这个公钥加密信息,只有服务器的私钥才能解密,从而保证了通信的安全性。
    • 哈希算法:用于验证数据的完整性,如 SHA - 256。在数据传输过程中,会对数据进行哈希计算,接收方通过重新计算哈希值并与发送方提供的哈希值进行比较,来判断数据是否被篡改。
  • 认证方式
    • 基于密码的认证:这是最常见的认证方式。用户输入用户名和密码,客户端将其发送到服务器进行验证。不过这种方式相对安全性稍低,因为密码可能被窃取。
    • 基于密钥的认证:更为安全。用户生成一对密钥(公钥和私钥),将公钥放置在服务器的授权密钥文件中。当客户端尝试连接时,服务器使用公钥加密一个随机数,客户端用私钥解密并返回结果,以此来验证身份。

三、SSH 客户端和服务器配置

  • 服务器配置
    • 安装和启动:在 Linux 系统中,通常使用包管理器(如 apt、yum)安装 OpenSSH 服务器软件(如 openssh - server),安装完成后启动服务(systemctl start sshd)。
    • 配置文件修改:主要的配置文件是 sshd_config,在这里可以设置监听端口(默认为 22)、允许或禁止 root 登录、认证方式等选项。例如,要更改监听端口可以修改 "Port" 选项。
    • 密钥管理:服务器的主机密钥在安装时自动生成,这些密钥用于识别服务器身份。如果主机密钥发生变化,客户端会收到警告,这可能意味着存在中间人攻击。
  • 客户端配置
    • 基本连接:在 Linux 或 macOS 系统中,可以使用命令行工具 "ssh" 进行连接。例如,"ssh user@server_ip",其中 "user" 是远程服务器的用户名,"server_ip" 是服务器的 IP 地址。
    • 配置文件(~/.ssh/config):可以在客户端的配置文件中设置常用的连接选项,如别名、代理设置、默认的密钥等。例如,可以为经常访问的服务器设置别名,这样通过别名就可以快速连接。

四,配置文件分析:

vim /etc/ssh/sshd_config

21.#Port 22 # 默认监听22端口,可修改
22.#AddressFamily any # IPV4和IPV6协议家族用哪个,any表示二者均有
23.#ListenAddress 0.0.0.0 # 指明监控的地址,0.0.0.0表示本机的所有地址(默认可修改)
24.#ListenAddress :: # 指明监听的IPV6的所有地址格式

26.#HostKey /etc/ssh/ssh_host_rsa_key # rsa私钥认证,默认
27.#HostKey /etc/ssh/ssh_host_ecdsa_key # ecdsa私钥认证
28.#HostKey /etc/ssh/ssh_host_ed25519_key # ed25519私钥认证

34 #SyslogFacility AUTH # ssh登录系统的时会记录信息并保存在/var/log/secure
35.#LogLevel INFO # 日志的等级

39.#LoginGraceTime 2m # 登录的宽限时间,默认2分钟没有输入密码,则自动断开连接
40 PermitRootLogin yes # 允许管理员root登录
41.#StrictModes yes # 是否让sshd去检查用户主目录或相关文件的权限数据
42.#MaxAuthTries 6 # 最大认证尝试次数,最多可以尝试6次输入密码。之后需要等待某段时间后才能再次输入密码
43.#MaxSessions 10 # 允许的最大会话数

49.AuthorizedKeysFile .ssh/authorized_keys # 选择基于密钥验证时,客户端生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面
65 #PasswordAuthentication yes # 登录ssh时是否进行密码验证
66 #PermitEmptyPasswords no # 登录ssh时是否允许密码为空

......
123.Subsystem sftp /usr/libexec/openssh/sftp-server #支持 SFTP ,如果注释掉,则不支持sftp连接
AllowUsers user1 user2#登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录

相关推荐
stormsha7 分钟前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
笑鸿的学习笔记17 分钟前
虚幻引擎5-Unreal Engine笔记之SET节点的输出引脚获取设置后的最新变量值
笔记·ue5·虚幻
草莓熊Lotso22 分钟前
【数据结构初阶】--算法复杂度的深度解析
c语言·开发语言·数据结构·经验分享·笔记·其他·算法
新加坡内哥谈技术39 分钟前
Meta计划借助AI实现广告创作全自动化
运维·人工智能·自动化
zyjyyds1131 小时前
win11系统 Docker Desktop 突然提示Docker Engine stopped解决情况之一
运维·docker·容器
Altairr1 小时前
Docker基础(一)
运维·docker·容器·eureka
东京老树根1 小时前
SAP学习笔记 - 开发27 - 前端Fiori开发 Routing and Navigation(路由和导航)
笔记·学习
筏.k1 小时前
grep、wc 与管道符快速上手指南
linux
文牧之1 小时前
PostgreSQL 的扩展pageinspect
运维·数据库·postgresql
Johny_Zhao1 小时前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维