什么是SSH传输?

Git拉取发现有HTTPS拉取和SSH拉取,因此研究一下SSH拉取

SSH(Secure Shell,安全外壳协议)是一种加密网络协议,用于在不安全的网络中安全地访问和管理远程计算机。以下是详细解析:


一、SSH的核心作用

  1. 远程登录
    用户可通过SSH在本地终端操作远程服务器(如Linux服务器),就像直接在服务器上输入命令一样。

    • 示例:ssh username@server_ip(用用户名和服务器IP登录)
  2. 安全文件传输
    通过SCP(Secure Copy)或SFTP(SSH File Transfer Protocol)加密传输文件。

    • 示例:scp file.txt username@server_ip:/path/to/destination
  3. 端口转发
    将本地端口与远程服务器端口绑定,实现安全隧道(如绕过防火墙或访问内网服务)。


二、SSH的工作原理

  1. 加密技术

    • 非对称加密(公钥/私钥):
      • 服务器生成一对密钥(公钥公开,私钥保密)。
      • 客户端用公钥加密数据,只有服务器的私钥能解密。
    • 对称加密(会话密钥):
      • 首次连接时,通过非对称加密交换一个临时对称密钥,后续数据用此密钥高效加密。
  2. 连接流程

    1. 客户端发起连接请求。
    2. 服务器发送公钥(如~/.ssh/id_rsa.pub)。
    3. 客户端验证公钥合法性(如检查known_hosts文件)。
    4. 协商对称加密算法,生成会话密钥。
    5. 加密通信开始。

三、SSH的主要功能

功能说明
远程命令执行通过命令行直接操作远程服务器(如重启服务、编辑配置文件)。
文件传输安全上传/下载文件(SCP/SFTP)。
端口转发本地端口映射到远程服务器(-L参数)或反向代理(-R参数)。
多路复用复用已有SSH连接,减少重复认证开销(ControlMaster配置)。

四、SSH的两种身份验证方式

  1. 密码登录

    • 输入密码后,服务器验证是否正确。
    • 缺点:易被暴力破解,需配合密钥使用更安全。
  2. 密钥对登录(推荐)

    • 生成密钥对ssh-keygen -t rsa(生成id_rsa私钥和id_rsa.pub公钥)。
    • 上传公钥ssh-copy-id username@server_ip(将公钥添加到服务器的~/.ssh/authorized_keys)。
    • 原理:客户端用私钥签名,服务器用公钥验证签名。

五、SSH服务端配置(以Linux为例)

  1. 修改默认端口
    编辑/etc/ssh/sshd_config,设置Port 2222(避免扫描攻击)。

  2. 禁用密码登录
    设置PasswordAuthentication no,强制使用密钥登录。

  3. 限制访问IP
    添加AllowUsers user@192.168.1.*,仅允许特定IP段连接。

  4. 重启服务
    sudo systemctl restart sshd(Ubuntu/Debian)或sudo service ssh restart(CentOS)。


六、SSH的优缺点

优点缺点
数据加密,防止窃听和篡改密钥管理复杂(尤其多服务器场景)。
支持多种协议(SFTP/SCP等)配置不当可能导致连接失败。
跨平台兼容(Windows/Linux/macOS)对新手不够友好(需理解公钥/私钥)。

七、实际应用场景

  1. 服务器运维
    开发者通过SSH登录云服务器部署代码或调试。

  2. 自动化脚本
    在CI/CD流程中,用SSH执行远程命令(如Ansible工具)。

  3. 安全访问内网服务
    通过SSH隧道访问家中NAS或公司内部系统(如ssh -L 8080:localhost:3306 user@server)。


八、总结

SSH是远程管理的基石,通过加密和身份验证保障数据传输安全。掌握密钥登录、端口转发等高级功能,能显著提升效率和安全性。对于服务器管理员,SSH是日常工作中不可或缺的工具。

Licensed under CC BY-NC-SA 4.0