Git拉取发现有HTTPS拉取和SSH拉取,因此研究一下SSH拉取
SSH(Secure Shell,安全外壳协议)是一种加密网络协议,用于在不安全的网络中安全地访问和管理远程计算机。以下是详细解析:
一、SSH的核心作用
远程登录
用户可通过SSH在本地终端操作远程服务器(如Linux服务器),就像直接在服务器上输入命令一样。- 示例:
ssh username@server_ip(用用户名和服务器IP登录)
- 示例:
安全文件传输
通过SCP(Secure Copy)或SFTP(SSH File Transfer Protocol)加密传输文件。- 示例:
scp file.txt username@server_ip:/path/to/destination
- 示例:
端口转发
将本地端口与远程服务器端口绑定,实现安全隧道(如绕过防火墙或访问内网服务)。
二、SSH的工作原理
加密技术
- 非对称加密(公钥/私钥):
- 服务器生成一对密钥(公钥公开,私钥保密)。
- 客户端用公钥加密数据,只有服务器的私钥能解密。
- 对称加密(会话密钥):
- 首次连接时,通过非对称加密交换一个临时对称密钥,后续数据用此密钥高效加密。
- 非对称加密(公钥/私钥):
连接流程
- 客户端发起连接请求。
- 服务器发送公钥(如
~/.ssh/id_rsa.pub)。 - 客户端验证公钥合法性(如检查
known_hosts文件)。 - 协商对称加密算法,生成会话密钥。
- 加密通信开始。
三、SSH的主要功能
| 功能 | 说明 |
|---|---|
| 远程命令执行 | 通过命令行直接操作远程服务器(如重启服务、编辑配置文件)。 |
| 文件传输 | 安全上传/下载文件(SCP/SFTP)。 |
| 端口转发 | 本地端口映射到远程服务器(-L参数)或反向代理(-R参数)。 |
| 多路复用 | 复用已有SSH连接,减少重复认证开销(ControlMaster配置)。 |
四、SSH的两种身份验证方式
密码登录
- 输入密码后,服务器验证是否正确。
- 缺点:易被暴力破解,需配合密钥使用更安全。
密钥对登录(推荐)
- 生成密钥对:
ssh-keygen -t rsa(生成id_rsa私钥和id_rsa.pub公钥)。 - 上传公钥:
ssh-copy-id username@server_ip(将公钥添加到服务器的~/.ssh/authorized_keys)。 - 原理:客户端用私钥签名,服务器用公钥验证签名。
- 生成密钥对:
五、SSH服务端配置(以Linux为例)
修改默认端口
编辑/etc/ssh/sshd_config,设置Port 2222(避免扫描攻击)。禁用密码登录
设置PasswordAuthentication no,强制使用密钥登录。限制访问IP
添加AllowUsers user@192.168.1.*,仅允许特定IP段连接。重启服务
sudo systemctl restart sshd(Ubuntu/Debian)或sudo service ssh restart(CentOS)。
六、SSH的优缺点
| 优点 | 缺点 |
|---|---|
| 数据加密,防止窃听和篡改 | 密钥管理复杂(尤其多服务器场景)。 |
| 支持多种协议(SFTP/SCP等) | 配置不当可能导致连接失败。 |
| 跨平台兼容(Windows/Linux/macOS) | 对新手不够友好(需理解公钥/私钥)。 |
七、实际应用场景
服务器运维
开发者通过SSH登录云服务器部署代码或调试。自动化脚本
在CI/CD流程中,用SSH执行远程命令(如Ansible工具)。安全访问内网服务
通过SSH隧道访问家中NAS或公司内部系统(如ssh -L 8080:localhost:3306 user@server)。
八、总结
SSH是远程管理的基石,通过加密和身份验证保障数据传输安全。掌握密钥登录、端口转发等高级功能,能显著提升效率和安全性。对于服务器管理员,SSH是日常工作中不可或缺的工具。