本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

sshpiperd Docker 镜像下载 - 轩辕镜像

sshpiperd 镜像详细信息和使用指南

sshpiperd 镜像标签列表和版本信息

sshpiperd 镜像拉取命令和加速下载

sshpiperd 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

sshpiperd
farmer1992/sshpiperd
自动构建

sshpiperd 镜像详细信息

sshpiperd 镜像标签列表

sshpiperd 镜像使用说明

sshpiperd 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

SSH Piper是一个基于用户名的SSH反向代理工具,能够根据用户名、源IP等信息路由SSH连接,实现SSH/SCP的代理转发功能。
2 收藏0 次下载activefarmer1992镜像

sshpiperd 镜像详细说明

sshpiperd 使用指南

sshpiperd 配置说明

sshpiperd 官方文档

SSH Piper

SSH Piper 作为一个类代理工具,通过 usernamesrc ip 等信息路由连接。

+---------+                      +------------------+          +-----------------+
|         |                      |                  |          |                 |
|   Bob   +----ssh -l bob----+   |   SSH Piper   +------------->   Bob' machine  |
|         |                  |   |               |  |          |                 |
+---------+                  |   |               |  |          +-----------------+
                             +---> pipe-by-name--+  |                             
+---------+                  |   |               |  |          +-----------------+
|         |                  |   |               |  |          |                 |
|  Alice  +----ssh -l alice--+   |               +------------->  Alice' machine |
|         |                      |                  |          |                 |
+---------+                      +------------------+          +-----------------+


 Downstream                         SSH Piper                       Upstream                     

安装

使用 Docker 镜像

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 -> ***:22 # ssh 127.0.0.1 -p 2222 -l bitbucket
github -> ***:22 # ssh 127.0.0.1 -p 2222 -l github
gitlab -> ***: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 允许您在连接到上游之前添加自己的挑战。如果客户端在此挑战中失败,连接将被关闭。然而,客户端必须通过上游服务器的认证才能建立整个连接。"额外挑战"是必需的,但并不足够。

当您想要使用公钥和类似 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
    ***.timing ***.typescript
    
    $ scriptreplay -t ***.timing ***.typescript # 将重放 SSH 会话
    

使用 sshpiper 命令管理管道

SSH Piper 附带了用于列出/添加/删除管道的工具。

使用 sshpiperd pipe -h 了解更多信息。

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker加速体验非常流畅,大镜像也能快速完成下载。"