安装部署
jetbrains使用远程docker的套接字
本文档使用 MrDoc 发布
-
+
首页
jetbrains使用远程docker的套接字
一、准备工作 环境说明 Linux服务器(IP假设为192.168.1.100) Windows客户端 已安装openssl工具(Linux自带,Windows需手动安装) 原理简介 使用TLS证书双向验证:客户端验证服务器身份,服务器验证客户端身份。 通过CA(证书颁发机构)签名,确保只有持有有效证书的设备能通信。 二、生成CA证书(在Linux操作) # 1. 创建证书存储目录 sudo mkdir -p /etc/docker/certs cd /etc/docker/certs # 2. 生成CA私钥(需设置密码) openssl genrsa -aes256 -out ca-key.pem 4096 # 3. 生成CA证书(有效期1年) openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem 作用解释: ca-key.pem:CA的私钥,用于签名其他证书,必须严格保密。 ca.pem:CA的公钥证书,分发给所有需要验证的客户端和服务端。 三、生成服务器证书(Linux端) # 1. 生成服务器私钥 openssl genrsa -out server-key.pem 4096 # 2. 创建证书签名请求(CSR) openssl req -subj "/CN=192.168.1.100" -sha256 -new -key server-key.pem -out server.csr # 3. 设置证书扩展属性 echo subjectAltName = IP:192.168.1.100,IP:127.0.0.1 > extfile.cnf echo extendedKeyUsage = serverAuth >> extfile.cnf # 4. 用CA签名服务器证书 openssl x509 -req -days 365 -sha256 \ -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial \ -out server-cert.pem -extfile extfile.cnf 关键参数解释: subjectAltName:必须包含服务器的IP或域名,否则客户端会报证书不匹配。 serverAuth:声明证书用于服务器身份验证。 四、生成客户端证书(Windows端) # 在Windows PowerShell中执行(需安装OpenSSL) # 1. 生成客户端私钥 openssl genrsa -out client-key.pem 4096 # 2. 创建证书签名请求 openssl req -subj "/CN=client" -new -key client-key.pem -out client.csr # 3. 设置客户端证书扩展属性 echo extendedKeyUsage = clientAuth > client-extfile.cnf # 4. 用CA签名客户端证书 openssl x509 -req -days 365 -sha256 \ -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial \ -out client-cert.pem -extfile client-extfile.cnf 五、配置Docker守护进程 修改Docker配置 sudo nano /etc/docker/daemon.json 添加内容: { "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"], "tlsverify": true, "tlscacert": "/etc/docker/certs/ca.pem", "tlscert": "/etc/docker/certs/server-cert.pem", "tlskey": "/etc/docker/certs/server-key.pem" } 重启Docker服务 sudo systemctl daemon-reload sudo systemctl restart docker 配置项解释: tlsverify:启用强制TLS验证 tlscacert:信任的CA证书 tlscert:服务器证书 tlskey:服务器私钥 六、Windows客户端配置 将以下文件复制到Windows: ca.pem client-cert.pem client-key.pem 创建证书目录: mkdir C:\Users\<用户名>\.docker 将证书文件放入此目录,重命名为: ca.pem → ca.pem client-cert.pem → cert.pem client-key.pem → key.pem 设置环境变量: [Environment]::SetEnvironmentVariable("DOCKER_HOST", "tcp://192.168.1.100:2376", "User") [Environment]::SetEnvironmentVariable("DOCKER_TLS_VERIFY", "1", "User") 七、验证连接 docker --tlsverify version 成功输出则表明配置正确。 八、安全加固建议 文件权限设置: sudo chmod 600 /etc/docker/certs/*-key.pem sudo chown root:root /etc/docker/certs/*-key.pem 防火墙规则: sudo ufw allow 2376/tcp sudo ufw reload 证书管理: CA私钥(ca-key.pem)离线保存 每年轮换一次证书 吊销丢失的客户端证书 常见问题排查 证书不匹配错误: 检查服务器证书的subjectAltName是否包含实际IP 确保证书文件路径正确 连接被拒绝: 检查Docker是否监听2376端口:sudo netstat -tulnp | grep 2376 查看Docker日志:journalctl -u docker.service 权限问题: 使用sudo docker ...测试是否为权限问题 检查证书文件是否对当前用户可读 通过以上步骤,您已经建立了一个基于TLS证书验证的安全Docker远程访问通道。这种配置比单纯的IP白名单更安全,能有效防止中间人攻击和未授权访问。
我在学习
2025年4月28日 17:14
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码