autossh Docker 镜像下载 - 轩辕镜像
autossh 镜像详细信息和使用指南
autossh 镜像标签列表和版本信息
autossh 镜像拉取命令和加速下载
autossh 镜像使用说明和配置指南
Docker 镜像加速服务 - 轩辕镜像平台
国内开发者首选的 Docker 镜像加速平台
极速拉取 Docker 镜像服务
相关 Docker 镜像推荐
热门 Docker 镜像下载
autossh 镜像详细信息
autossh 镜像标签列表
autossh 镜像使用说明
autossh 镜像拉取命令
Docker 镜像加速服务
轩辕镜像平台优势
镜像下载指南
相关 Docker 镜像推荐
autossh 镜像详细说明
autossh 使用指南
autossh 配置说明
autossh 官方文档
autossh
镜像,旨在提供一种安全的方式建立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。
texttarget ---> |防火墙| >--- 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端口。这称为“反向隧道”。
textTARGET_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),您可能需要考虑我的另一个项目ambassador。
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),您可能需要考虑我的另一个项目ambassador。
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创建。
ymlversion: '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上自动构建以下架构版本:
amd64armv6(如Raspberry Pi Zero)armv7(如Raspberry Pi 2至4)arm64v8(如Amazon EC2 A1实例)===SHORT_DESC=== 高度可定制的AutoSSH Docker容器 ===FULL_DESC===# autossh
镜像,旨在提供安全的SSH隧道建立方式,无需在镜像中包含密钥或链接到主机。与其他autossh容器相比,它体积更小、可定制性更强、支持自动构建且易于使用,遵循标准约定以便于理解和知识扩展。
描述
autossh 用于启动SSH进程并对其进行监控,当SSH进程终止或停止传输流量时自动重启。
术语定义
- local(本地)- 此Docker容器。
- target(目标)- 隧道的最终目的地端点。
- remote(远程)- 隧道传输的代理服务器,用于连接到target。
- source(源)- 无法直接访问target但可访问remote的起始端点。
通常target位于无公网IP的局域网,remote拥有公网IP且可被target和source访问,source通过remote访问target:
texttarget ---> |防火墙| >--- remote ---< |防火墙| <--- source 10.1.1.101 203.0.113.10 192.168.1.101
示例
在家庭计算机(target)上运行Docker,
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务
常见问题
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
轩辕镜像下载加速使用手册
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
登录仓库拉取
通过 Docker 登录认证访问私有仓库
Linux
在 Linux 系统配置镜像加速服务
Windows/Mac
在 Docker Desktop 配置镜像加速
Docker Compose
Docker Compose 项目配置加速
K8s Containerd
Kubernetes 集群配置 Containerd
宝塔面板
在宝塔面板一键配置镜像加速
群晖
Synology 群晖 NAS 配置加速
飞牛
飞牛 fnOS 系统配置镜像加速
极空间
极空间 NAS 系统配置加速服务
爱快路由
爱快 iKuai 路由系统配置加速
绿联
绿联 NAS 系统配置镜像加速
威联通
QNAP 威联通 NAS 配置加速
Podman
Podman 容器引擎配置加速
Singularity/Apptainer
HPC 科学计算容器配置加速
其他仓库配置
ghcr、Quay、nvcr 等镜像仓库
专属域名拉取
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429