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

autossh Docker 镜像下载 - 轩辕镜像

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

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

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

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

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

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

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

autossh
jnovack/autossh
自动构建

autossh 镜像详细信息

autossh 镜像标签列表

autossh 镜像使用说明

autossh 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

高度可定制的AutoSSH Docker容器
30 收藏0 次下载activejnovack镜像

autossh 镜像详细说明

autossh 使用指南

autossh 配置说明

autossh 官方文档

autossh

![Docker]([] ![Github]([]

高度可定制的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机器拥有targetsource都能访问的地址;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连接到remote203.0.113.10),然后通过连接127.0.0.1:TUNNEL_PORT访问target10.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

您可以定义隧道在remoteSSH_MODE=-R时)或localSSH_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

![Docker]([] ![Github]([]

高度可定制的AutoSSH Docker容器。

概述

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

描述

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

术语定义

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

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

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

示例

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

用户好评

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

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

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