关于Linux SSH的那些知识点

以下是Linux SSH相关知识点的系统整理,涵盖基础概念、配置指南、安全实践及实际案例


一、SSH核心知识点

  1. 协议版本

    • SSH-1(不安全,已淘汰) vs SSH-2(推荐,默认协议)
    • 加密机制:非对称加密(RSA/ECDSA)交换密钥 + 对称加密(AES/ChaCha20)传输数据
  2. 密钥认证流程

    • 客户端生成私钥(~/.ssh/id_rsa)和公钥(~/.ssh/id_rsa.pub)
    • 公钥上传至服务器~/.ssh/authorized_keys
    • 服务器验证客户端私钥匹配性,替代密码登录
  3. 端口与连接方式

    • 默认端口22,可修改为高危端口(如2222)增强安全性
    • ssh user@host(标准连接)、ssh -p port user@host(指定端口)

二、SSH服务配置详解

1. 主配置文件:/etc/ssh/sshd_config
配置项 说明 推荐值
Port SSH监听端口 2222
PermitRootLogin 允许root直接登录 no
PasswordAuthentication 是否启用密码认证 no(禁用以提高安全)
KeyAuthentication 是否启用密钥认证 yes
AllowUsers 允许登录的用户白名单 alice,bob
DenyUsers 禁止登录的用户黑名单 guest
ClientAliveInterval 客户端空闲超时时间(秒) 300
2. 配置生效步骤
sudo vim /etc/ssh/sshd_config      # 编辑配置
sudo systemctl restart sshd          # 重启SSH服务
sudo ufw allow 2222/tcp             # 开放自定义端口(若使用)

三、SSH安全加固最佳实践

  1. 禁用密码登录

    sudo sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
  2. 密钥认证强制启用
    确保KeyAuthentication yesPasswordAuthentication no同时存在。

  3. 防火墙策略

    sudo ufw drop incoming to 22      # 仅允许特定IP访问(示例)
    sudo ufw allow from 192.168.1.0/24 to any port 22
  4. 限制登录尝试次数

    sudo nano /etc/security/limits.conf
    # 添加以下行:
    * soft sshd_max_auth_tries 3
    * hard sshd_max_auth_tries 3

四、常见故障排查案例

案例1:无法通过SSH连接
  • 检查步骤
    1. 网络连通性:ping host_ip
    2. SSH服务状态:systemctl status sshd
    3. 防火墙规则:sudo ufw status numbered
    4. 服务器SSH配置:tail -n 50 /var/log/auth.log
案例2:密钥认证失败
  • 典型原因
    • .ssh目录权限非700:chmod 700 ~/.ssh
    • authorized_keys文件权限非600:chmod 600 ~/.ssh/authorized_keys
    • 公钥未正确上传至服务器
案例3:用户被锁定(Fail2Ban)​
  • 解决命令
    sudo fail2ban-client set sshd unbanip 123.123.123.123
    sudo systemctl restart fail2ban

五、自动化运维实战

1. 批量免密登录部署
  • 生成密钥对
    ssh-keygen -t rsa -b 4096 -C "[email protected]"
  • 自动部署公钥
    cat ~/.ssh/id_rsa.pub | ssh user@remote_host "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
2. SSH隧道应用
  • 本地端口转发​(访问内网服务):
    ssh -L 8080:localhost:80 user@remote_host
  • 远程端口转发​(暴露本地服务):
    ssh -R 2222:localhost:22 user@remote_host

六、高级技巧

  1. SSH配置文件个性化
    ~/.ssh/config示例:

    Host dev-server
        HostName 10.0.0.100
        User admin
        Port 2222
        IdentityFile ~/.ssh/dev_key

    连接时只需ssh dev-server

  2. SSHFS文件系统挂载

    sshfs user@remote_host:/path/to/share /local/mount/point

七、备份与恢复

  • 定期备份
    tar -czvf ssh_backup.tar.gz /etc/ssh /home/*/.ssh
  • 恢复关键文件
    sudo cp /path/to/backup/sshd_config /etc/ssh/

总结:SSH安全的核心在于最小化攻击面(禁用密码、限制用户、修改端口)并结合密钥认证。通过合理配置与日志监控,可有效防范暴力破解和未授权访问。建议结合Ansible等工具实现配置标准化部署。

你可能感兴趣的:(Linux企业应用经验集,linux,ssh,运维)