专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像
专业版
轩辕镜像 官方专业版
轩辕镜像
专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题轩辕镜像免费版
其他
关于我们网站地图
热门搜索:
autossh

jnovack/autossh

自动构建
jnovack

高度可定制的AutoSSH Docker容器

31 次收藏下载次数: 0状态:自动构建维护者:jnovack仓库类型:镜像最近更新:11 个月前
轩辕镜像,让镜像更快,让人生更轻。点击查看
中文简介
标签下载
镜像标签列表与下载命令
轩辕镜像,让镜像更快,让人生更轻。点击查看

autossh

高度可定制的AutoSSH Docker容器。

概述

jnovack/autossh 是一个轻量级(约15MB)镜像,旨在提供一种安全的方式建立SSH隧道,无需在镜像中包含密钥或链接到主机。

市面上有数千个autossh Docker容器,为何选择此镜像?我们希望您能发现它更易于使用:体积更小、可定制性更强、支持自动构建、使用简单,并且希望您能从中学习到知识。我们尽可能遵循标准和既定约定,使其更易于理解,并方便您将本项目的代码行复制到其他项目中,以扩展您的知识!

描述

autossh 是一个启动ssh副本并对其进行监控的程序,若ssh进程终止或停止传输流量,autossh会必要时重启它。

在开始之前,我们先定义一些术语:

  • local(本地)- 此Docker容器。
  • target(目标)- 隧道的端点和最终目的地。
  • remote(远程)- 用于隧道传输的“中间人”或代理服务器,通过它连接到target。
  • source(源)- 起始端点,无法直接访问target,但可以访问remote。

通常,local 机器与 target 相同,但由于使用Docker,我们需要将local容器与希望autossh连接的target端点分离。通常,autossh就是从local运行的。

一般情况下,target可能位于没有公网IP的家庭局域网段;而remote机器拥有target和source都能访问的地址;source只能访问remote。

text
target ---> |防火墙| >--- remote ---< |防火墙| <--- source
10.1.1.101               203.0.113.10            192.168.1.101

target(运行autossh)连接到remote服务器并保持隧道活跃,使source可以通过remote代理访问target上的资源。这可视为“远程端口转发”。

示例

您在target(家庭计算机)上运行Docker。(注意:Linux Docker主机自动创建docker0接口,IP为172.17.0.1,以便容器可以路由到主机并访问其他网络。本示例中,启动的容器IP可能为172.17.0.2。)您有一台互联网上的虚拟专用服务器(VPS),可被所有设备访问。此local Docker容器将连接到remote VPS,并将remote的2222端口隧道转发到target的22端口。任何连接到remote 2222端口的请求,实际上都会连接到target的22端口。这称为“反向隧道”。

text
      TARGET_PORT                  REMOTE_PORT    TUNNEL_PORT
 target <--------------- local ------------> remote <--------------- source
 10.1.1.101           172.17.0.2          203.0.113.10        192.168.1.101

LOCAL(172.17.0.2)设备连接到REMOTE(203.0.113.10)的REMOTE_PORT(:22),以在REMOTE(203.0.113.10)上创建TUNNEL_PORT(:***)隧道。

SOURCE(192.168.1.101)连接到REMOTE(203.0.113.10)的TUNNEL_PORT(:***),以访问TARGET(10.1.1.101)的TARGET_PORT(:22)。

默认情况下,SSH服务器应用(如OpenSSH、Dropbear等)仅允许从回环接口(127.0.0.1)连接到转发端口。

这意味着,您必须先通过身份验证连接到remote,并将其用作“跳转点”,然后才能连接到隧道。

在上述示例中,从source,您必须先通过SSH连接到remote(203.0.113.10),然后通过连接127.0.0.1:TUNNEL_PORT访问target(10.1.1.101)。这是一个两步过程。

要将其简化为一步过程(从source通过remote直接连接到target),您必须在remote上进行一些安全更改(不建议)。请参见下文的SSH_BIND_IP部分。

免责声明

通过将remote的2222端口隧道转发到target的22端口,您可能会将家庭服务器(进而您的家庭网络)暴露在互联网上,这通常被称为“一件坏事(TM)”。请确保适当使用防火墙、fail2ban脚本、非root访问、仅基于密钥的身份验证以及其他必要的安全措施。

设置

首先,您需要在Docker主机上生成SSH密钥。这样可以确保容器的密钥与普通用户密钥分离,以便在需要撤销其中一个时不会影响另一个。

text
$ ssh-keygen -t rsa -b 4096 -C "autossh" -f autossh_id_rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jnovack/autossh_id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jnovack/autossh_id_rsa.
Your public key has been saved in /home/jnovack/autossh_id_rsa.pub.
The key fingerprint is:
00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff autossh
The key's randomart image is:
+-----[ RSA 4096]-----+
|     _.-'''''-._     |
|   .'  _     _  '.   |
|  /   (_)   (_)   \  |
| |  ,           ,  | |
| |  \`.       .`/  | |
|  \  '.`'""'"`.'  /  |
|   '.  `'---'`  .'   |
|     '-._____.-'     |
+---------------------+

命令行选项

一个Docker容器怎能没有定制功能?我们提供了大量可设置的环境变量。

环境变量

所有环境变量均以SSH_为前缀,并非因为必须隧道传输SSH,而是为了便于分组。唯一需要的SSH连接是从LOCAL设备到REMOTE服务器。但是,如果您希望通过证书安全地隧道传输其他协议(如mysql、redis、mongodb),您可能需要考虑我的另一个项目https://hub.docker.com/r/jnovack/ambassador/%E3%80%82

SSH_REMOTE_USER

指定remote端点上的用户名。(默认值:root)

SSH_REMOTE_HOST

指定remote端点的地址(首选IP)。(默认值:localhost)

SSH_REMOTE_PORT

指定连接到remote端点的SSH端口。(默认值:22)

SSH_TUNNEL_PORT

指定remote端点上作为隧道入口的端口号。(默认值:>32768的随机端口)如果不希望每次重启jnovack/autossh时使用新端口,您可能需要显式设置此值。

此选项会根据SSH_MODE(见下文)反向生效。

SSH_TARGET_HOST

指定target的地址(首选IP)。

SSH_TARGET_PORT

指定target端点上作为隧道出口或目标服务的端口号。通常是SSH(端口22),但您也可以隧道传输其他服务,如redis(端口6379)、elasticsearch(端口9200)或HTTP(端口80)和HTTPS(端口443)。

如果您希望通过证书安全地隧道传输其他协议(如mysql、redis、mongodb),您可能需要考虑我的另一个项目https://hub.docker.com/r/jnovack/ambassador/%E3%80%82

SSH_STRICT_HOST_IP_CHECK

如果提供了known_hosts文件,但希望不检查主机的IP地址,设置为false。这有助于避免动态IP主机的问题,但会降低对DNS欺骗***的防护。默认启用主机IP检查。

SSH_KEY_FILE

如果希望将密钥存储在Docker Secrets中,可将此设置为/run/secrets/*secret-name*。

SSH_KNOWN_HOSTS_FILE

如果希望将known_hosts存储在Docker Secrets中,可将此设置为/run/secrets/*secret-name*。

SSH_MODE

定义隧道的设置方式:

  • -R:默认,远程转发模式。
  • -L:本地转发模式。

SSH_BIND_IP

您可以定义隧道在remote(SSH_MODE=-R时)或local(SSH_MODE=-L时)上绑定的IP地址。默认仅127.0.0.1。

SSH_MODE=-R(默认)

警告:此过程涉及更改服务器安全设置,会将您的target暴露给其他网络,甚至可能是互联网。不建议在不采取额外预防措施的情况下执行此过程。

除非正确配置remote服务器配置文件中的GatewayPorts变量,否则此选项不会生效。请参阅您的SSH服务器文档以获取正确设置。

SSH_MODE=-L

您可能希望将此设置为0.0.0.0,以便将SSH_TUNNEL_PORT绑定到LOCAL侧的所有接口。

SSH_SERVER_ALIVE_INTERVAL

设置超时时间(秒),如果在此时间内未从服务器收到数据,ssh(1)将通过加密通道发送消息以请求服务器响应。

  • 0:关闭此选项。
  • 10:此镜像的默认值。

更多详细信息请参见ssh_config(5)。

SSH_SERVER_ALIVE_COUNT_MAX

设置在终止并重新建立连接之前的活动消息阈值。

  • 3:此镜像的默认值。
  • SSH_SERVER_ALIVE_INTERVAL=0时,此变量无效。

更多详细信息请参见ssh_config(5)。

其他环境变量

  • autossh(1)
  • ssh_config(5)

挂载

对于简单使用,挂载是可选的。使用环境变量更为优越,因为它们可以存储在配置文件中,便于传输(和备份!)。

/id_rsa

挂载在设置步骤中生成的密钥,或设置SSH_KEY_FILE。

sh
-v /path/to/id_rsa:/id_rsa

/known_hosts

如果希望启用StrictHostKeyChecking,挂载known_hosts文件,或设置SSH_KNOWN_HOSTS_FILE。

sh
-v /path/to/known_hosts:/known_hosts

示例

docker-compose.yml

在第一个示例ssh-to-docker-host中,将从Docker容器(名为autossh-ssh-to-docker-host)到运行Docker容器的主机建立隧道。

使用时,通过SSH连接到虚拟互联网地址203.0.113.10:2222,您将被转发到172.17.0.2:22(运行Docker容器的主机)。

在第二个示例ssh-to-lan-endpoint中,将建立到Docker主机私有局域网内主机的隧道。通过SSH连接到虚拟互联网地址203.0.113.10:22222,将通过Docker容器、Docker主机,最终连接到私有局域网中的192.168.123.45:22。

最后,在第三个示例ssh-local-forward-on-1234中,将在容器上创建到198.168.123.45:22的本地转发,映射到端口1234。隧道将通过203.0.113.10:22222创建。

yml
version: '3.7'

services:
  ssh-to-docker-host:
    image: jnovack/autossh
    container_name: autossh-ssh-to-docker-host
    environment:
      - SSH_REMOTE_USER=sshuser
      - SSH_REMOTE_HOST=203.0.113.10
      - SSH_REMOTE_PORT=2222
      - SSH_TARGET_HOST=172.17.0.2
      - SSH_TARGET_PORT=22
    restart: always
    volumes:
      - /etc/autossh/id_rsa:/id_rsa
    dns:
      - 8.8.8.8
      - 1.1.1.1

  ssh-to-lan-endpoint:
    image: jnovack/autossh
    container_name: autossh-ssh-to-lan-endpoint
    environment:
      - SSH_REMOTE_USER=sshuser
      - SSH_REMOTE_HOST=203.0.113.10
      - SSH_REMOTE_PORT=22222
      - SSH_TARGET_HOST=198.168.123.45
      - SSH_TARGET_PORT=22
    restart: always
    volumes:
      - /etc/autossh/id_rsa:/id_rsa
    dns:
      - 8.8.8.8
      - 4.2.2.4
  
  ssh-local-forward-on-1234:
    image: jnovack/autossh
    container_name: autossh-ssh-local-forward
    environment:
      - SSH_REMOTE_USER=sshuser
      - SSH_REMOTE_HOST=203.0.113.10
      - SSH_REMOTE_PORT=22222
      - SSH_BIND_IP=0.0.0.0
      - SSH_TUNNEL_PORT=1234
      - SSH_TARGET_HOST=198.168.123.45
      - SSH_TARGET_PORT=22
      - SSH_MODE=-L
    restart: always
    volumes:
      - /etc/autossh/id_rsa:/id_rsa
    dns:
      - 8.8.8.8
      - 4.2.2.4
    

多架构镜像

此镜像在Docker Hub上自动构建以下架构版本:

  • amd64
  • armv6(如Raspberry Pi Zero)
  • armv7(如Raspberry Pi 2至4)
  • arm64v8(如Amazon EC2 A1实例)===SHORT_DESC=== 高度可定制的AutoSSH Docker容器 ===FULL_DESC===# autossh

高度可定制的AutoSSH Docker容器。

概述

jnovack/autossh 是一款轻量级(约15MB)镜像,旨在提供安全的SSH隧道建立方式,无需在镜像中包含密钥或链接到主机。与其他autossh容器相比,它体积更小、可定制性更强、支持自动构建且易于使用,遵循标准约定以便于理解和知识扩展。

描述

autossh 用于启动SSH进程并对其进行监控,当SSH进程终止或停止传输流量时自动重启。

术语定义

  • local(本地)- 此Docker容器。
  • target(目标)- 隧道的最终目的地端点。
  • remote(远程)- 隧道传输的代理服务器,用于连接到target。
  • source(源)- 无法直接访问target但可访问remote的起始端点。

通常target位于无公网IP的局域网,remote拥有公网IP且可被target和source访问,source通过remote访问target:

text
target ---> |防火墙| >--- remote ---< |防火墙| <--- source
10.1.1.101               203.0.113.10            192.168.1.101

示例

在家庭计算机(target)上运行Docker,

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 autossh 镜像标签

docker pull docker.xuanyuan.run/jnovack/autossh:<标签>

使用方法:

  • 登录认证方式
  • 免认证方式

DockerHub 原生拉取命令

docker pull jnovack/autossh:<标签>

更多 autossh 镜像推荐

gapfish/autossh logo

gapfish/autossh

gapfish
alpine autossh
1万+ 次下载
2 年前更新

查看更多 autossh 相关镜像

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

Docker 配置

登录仓库拉取

通过 Docker 登录认证访问私有仓库

专属域名拉取

无需登录使用专属域名

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

Harbor 镜像源配置

Harbor Proxy Repository 对接专属域名

Portainer 镜像源配置

Portainer Registries 加速拉取

Nexus 镜像源配置

Nexus3 Docker Proxy 内网缓存

系统配置

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

MacOS OrbStack

MacOS OrbStack 容器配置

Docker Compose

Docker Compose 项目配置

NAS 设备

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

极空间

极空间 NAS 系统配置服务

网络设备

爱快路由

爱快 iKuai 路由系统配置

宝塔面板

在宝塔面板一键配置镜像

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

使用与功能问题

配置了专属域名后,docker search 为什么会报错?

docker search 限制

Docker Hub 上有的镜像,为什么在轩辕镜像网站搜不到?

站内搜不到镜像

机器不能直连外网时,怎么用 docker save / load 迁镜像?

离线 save/load

docker pull 拉插件报错(plugin v1+json)怎么办?

插件要用 plugin install

WSL 里 Docker 拉镜像特别慢,怎么排查和优化?

WSL 拉取慢

轩辕镜像安全吗?如何用 digest 校验镜像没被篡改?

安全与 digest

第一次用轩辕镜像拉 Docker 镜像,要怎么登录和配置?

新手拉取配置

轩辕镜像合规吗?轩辕镜像的合规是怎么做的?

镜像合规机制

错误码与失败问题

docker pull 提示 manifest unknown 怎么办?

manifest unknown

docker pull 提示 no matching manifest 怎么办?

no matching manifest(架构)

镜像已拉取完成,却提示 invalid tar header 或 failed to register layer 怎么办?

invalid tar header(解压)

Docker pull 时 HTTPS / TLS 证书验证失败怎么办?

TLS 证书失败

Docker pull 时 DNS 解析超时或连不上仓库怎么办?

DNS 超时

docker 无法连接轩辕镜像域名怎么办?

域名连通性排查

Docker 拉取出现 410 Gone 怎么办?

410 Gone 排查

出现 402 或「流量用尽」提示怎么办?

402 与流量用尽

Docker 拉取提示 UNAUTHORIZED(401)怎么办?

401 认证失败

遇到 429 Too Many Requests(请求太频繁)怎么办?

429 限流

docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?

D-Bus 凭证提示

为什么会出现「单层超过 20GB」或 413,无法加速拉取?

413 与超大单层

账号 / 计费 / 权限

轩辕镜像免费版和专业版有什么区别?

免费版与专业版区别

轩辕镜像支持哪些 Docker 镜像仓库?

支持的镜像仓库

镜像拉取失败还会不会扣流量?

失败是否计费

麒麟 V10 / 统信 UOS 提示 KYSEC 权限不够怎么办?

KYSEC 拦截脚本

如何在轩辕镜像申请开具发票?

申请开票

怎么修改轩辕镜像的网站登录和仓库登录密码?

修改登录密码

如何注销轩辕镜像账户?要注意什么?

注销账户

配置与原理类

写了 registry-mirrors,为什么还是走官方或仍然报错?

mirrors 不生效

怎么用 docker tag 去掉镜像名里的轩辕域名前缀?

去掉域名前缀

如何拉取指定 CPU 架构的镜像(如 ARM64、AMD64)?

指定架构拉取

用轩辕镜像拉镜像时快时慢,常见原因有哪些?

拉取速度原因

为什么拉取镜像的 :latest 标签,拿到的往往不是「最新」镜像?

latest 与「最新」

查看全部问题→

用户好评

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

用户头像

oldzhang

运维工程师

Linux服务器

5

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

轩辕镜像
镜像详情
...
jnovack/autossh
博客Docker 镜像公告与技术博客
热门查看热门 Docker 镜像推荐
安装一键安装 Docker 并配置镜像源
镜像拉取问题咨询请 提交工单,官方技术交流群:1072982923。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
镜像拉取问题咨询请提交工单,官方技术交流群:。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
商务合作:点击复制邮箱
©2024-2026 源码跳动
商务合作:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.