
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
SSH Piper 作为一个类代理工具,通过 username、src ip 等信息路由连接。
+---------+ +------------------+ +-----------------+ | | | | | | | Bob +----ssh -l bob----+ | SSH Piper +-------------> Bob' machine | | | | | | | | | +---------+ | | | | +-----------------+ +---> pipe-by-name--+ | +---------+ | | | | +-----------------+ | | | | | | | | | Alice +----ssh -l alice--+ | +-------------> Alice' machine | | | | | | | +---------+ +------------------+ +-----------------+ Downstream SSH Piper Upstream
docker run farmer1992/sshpiperd
使用工作目录上游驱动运行
docker run -d -p 2222:2222 \ -v /etc/ssh/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key \ -v /YOUR_WORKING_DIR:/var/sshpiper \ farmer1992/sshpiperd
使用额外挑战运行
使用环境变量 SSHPIPERD_CHALLENGER 指定要使用的挑战程序
docker run -d -p 2222:2222 \ -e SSHPIPERD_CHALLENGER=pam \ -v /YOUR_PAM_CONFIG:/etc/pam.d/sshpiperd \ -v /etc/ssh/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key \ -v /YOUR_WORKING_DIR:/var/sshpiper \ farmer1992/sshpiperd
运行 sshpiperd 示例目录中的 showme.sh 脚本,或复制粘贴以下命令运行:
go get github.com/tg123/sshpiper/sshpiperd && `go env GOPATH`/src/github.com/tg123/sshpiper/sshpiperd/example/showme.sh
示例脚本将设置一个 sshpiper 服务器,配置如下:
bitbucket -> bitbucket@bitbucket.org:22 # ssh 127.0.0.1 -p 2222 -l bitbucket github -> github@github.com:22 # ssh 127.0.0.1 -p 2222 -l github gitlab -> gitlab@gitlab.com:22 # ssh 127.0.0.1 -p 2222 -l gitlab
连接到 gitlab:
$ ssh 127.0.0.1 -p 2222 -l gitlab Permission denied (publickey).
连接到 github.com:
$ ssh 127.0.0.1 -p 2222 -l github Permission denied (publickey).
sshpiper 提供了 3 个可插件化组件,用于高度自定义您的管道:
使用 sshpiperd daemon -h 了解更多信息
--upstream-driver=)上游驱动帮助 sshpiper 确定要连接的上游主机以及如何连接。例如,您可以通过配置上游驱动更改连接到上游 sshd 时的用户名。
可用的上游驱动
工作目录驱动
工作目录是一个类似 /home 的目录。SSHPiperd 从 workingdir/[username]/ 读取文件以了解上游的配置。
数据库驱动
数据库上游驱动连接到流行的数据库,如 mysql、pg 或 sqlite 等,以提供上游信息。
Kubernetes 驱动
Kubernetes 驱动可以使用 CRD 配置管道。
使用公钥认证
在 SSH 公钥认证期间,RFC 4252 第 7 节 中规定,SSH 客户端使用私钥对 session_id 和其他数据进行签名生成 sig。这是为了让服务器验证连接来自客户端而非"中间人"。
然而,sshpiper 实际上持有两个 SSH 连接,它正在执行"中间人"的操作。这两个 SSH 连接的 session_id 永远不会相同,因为它们是共享密钥的哈希值。RFC 4253 第 7.2 节。
为了支持公钥认证,sshpiper 将使用上游驱动提供的私钥修改 sig。例如,workingdir/[username]/ 中的 id_rsa。
工作原理:
+------------+ +------------------------+ | | | | | client | | SSH Piper | | PK_X +--------> | | | | | v | | | | Check PK_X | +------------+ | in authorized_keys | | | | | | | +----------------+ | v | | | | sign agian | | server | | using PK_Y +--------------> check PK_Y | | | | | | | | | +------------------------+ +----------------+
例如:
在客户端上:
ssh-copy-id -i PK_X test@sshpiper
在 ssh piper 服务器上:
ln -s ~test/.ssh/authorized_keys workingdir/test/authorized_keys ssh-keygen -N '' -f workingdir/test/id_rsa # 这是 PK_Y ssh-copy-id -i workingdir/test/id_rsa test@server
现在 ssh test@sshpiper -i PK_X,sshpiper 将向服务器发送 PK_Y 而不是 PK_X。
--challenger-driver=)sshpiper 允许您在连接到上游之前添加自己的挑战。如果客户端在此挑战中失败,连接将被关闭。然而,客户端必须通过上游服务器的认证才能建立整个连接。"额外挑战"是必需的,但并不足够。
当您想要使用公钥和类似 https://github.com/google/google-authenticator 之类的工具时,这非常有用。OpenSSH 不支持同时使用公钥和其他认证方式。
可用的挑战程序
pam
Linux-PAM 挑战程序
此模块使用名为 sshpiperd 的 pam 服务
您可以在 /etc/pam.d/sshpiperd 配置规则
azdevcode
支持 Azure AD 设备代码授权,更多信息
authy
支持来自 <[***]> 的令牌和一键验证
--auditor-driver=)审计器为 SSH Piper 传输的消息提供钩子,可以将消息记录到磁盘或动态过滤某些特定消息。
可用的审计器
SSH 会话日志记录 (--auditor-driver=typescript-logger)
当允许 record_typescript 时,每个管道连接将被记录到 --auditor-typescriptlogger-outputdir 中的 typescript) 文件。
文件格式与 scriptreplay(1) 兼容。
示例:
$ ./sshpiperd daemon --auditor-driver=typescript-logger ssh user_name@127.0.0.1 -p 2222 ... 执行一些命令 exit $ cd workingdir/user_name $ ls *.timing *.typescript 1472847798.timing 1472847798.typescript $ scriptreplay -t 1472847798.timing 1472847798.typescript # 将重放 SSH 会话
SSH Piper 附带了用于列出/添加/删除管道的工具。
使用 sshpiperd pipe -h 了解更多信息。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务