FinalShell

FinalShell 玩转 Docker:SSH 连接、文件传输和端口转发实用技巧

2026-08-26 · FinalShell

FinalShell 玩转 Docker:SSH 连接、文件传输和端口转发实用技巧 配图

大家好!FinalShell 作为强大的 SSH 客户端,让服务器管理变得简单。但涉及到 Docker 容器时,不少朋友会遇到连接、文件传输或调试上的疑问。这篇文章将通过问答形式,教你如何用 FinalShell 高效管理 Docker 容器,让开发调试更顺畅。

FinalShell 玩转 Docker:SSH 连接、文件传输和端口转发实用技巧

FinalShell 怎么连接到 Docker 容器内部的 SSH 服务?

想直接 SSH 到 Docker 容器内部?FinalShell 4.8.9 版本及以上支持。容器默认不带 SSH 服务,需先配置。

操作步骤:

  1. 修改 Dockerfile 安装 SSH: 以 Debian/Ubuntu 镜像为例,在 Dockerfile 中添加:

    # ... 其他指令 ...
    RUN apt-get update && apt-get install -y openssh-server
    RUN mkdir /var/run/sshd
    RUN echo 'root:your_password' | chpasswd # 替换为强密码
    RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    RUN sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config
    EXPOSE 22
    CMD ["/usr/sbin/sshd", "-D"]
    

    构建镜像:docker build -t my-app-with-ssh .

  2. 运行容器并映射 SSH 端口: 将容器 22 端口映射到宿主机未占用端口(如 2222):

    docker run -d -p 2222:22 --name my-ssh-container my-app-with-ssh
    
  3. 在 FinalShell 中配置连接: FinalShell 中新增 SSH 连接。

    • 主机: Docker 宿主机 IP。
    • 端口: 2222。
    • 认证: 「密码」,用户名 root,密码是你设置的。 即可通过 FinalShell SSH 到容器内部。密钥认证参考:FinalShell SSH 密钥配置指南

用 FinalShell 管理 Docker 容器

怎么在 FinalShell 里高效地传输文件到 Docker 容器?

文件传输是开发必备。如果容器已按上面步骤配置好 SSH,FinalShell 的 SFTP 功能就能大显身手。

  1. 使用 FinalShell 的 SFTP 面板: 连接到容器 SSH 服务后,右侧文件管理器面板就是 SFTP 客户端。直接拖拽、上传、下载、编辑,比 docker cp 直观高效。

  2. docker cp 作为备用: 容器未开启 SSH 或需脚本自动化时,docker cp 仍必要。

    • 宿主机到容器:docker cp /path/local container_name:/path/container
    • 容器到宿主机:docker cp container_name:/path/container /path/local 更多 SFTP 技巧:FinalShell SFTP 文件传输指南

Docker 容器端口映射了,FinalShell 怎么通过宿主机连接?

新手常困惑。Docker 端口映射 (-p host_port:container_port) 是将宿主机流量转发到容器。你始终连接的是宿主机的 host_port。

例如,容器内 Web 服务在 80 端口,映射到宿主机 8080 (-p 8080:80)。你应连接宿主机的 IP:8080。FinalShell 作为 SSH 客户端,连接宿主机后可执行 curl http://localhost:8080 测试。也可利用 FinalShell 端口转发,将宿主机端口转发到本地,方便本地访问。深入了解:FinalShell 端口转发指南

我在 FinalShell 里配置好了 SSH 密钥,为啥还是连不上 Docker 宿主机?

我踩过一个坑,有次私钥文件随意放,导致连不上。排查发现是密钥权限问题。

连接失败常见原因:

  1. 密钥文件权限: SSH 私钥文件权限严格。Linux 上 .ssh/id_rsa 权限应为 600。Windows 上,确保私钥文件(.ppk 或 .pem)仅当前用户只读。
  2. 私钥路径不正确: 检查 FinalShell 配置中私钥路径。
  3. 公钥未添加到 authorized_keys: 公钥内容须添加到宿主机的 /root/.ssh/authorized_keys,并确保该文件权限为 600 或 644。
  4. SSH 服务配置: 宿主机 sshd 可能未启用密钥认证,或配置文件 (/etc/ssh/sshd_config) 有误。
  5. 防火墙阻止: 宿主机防火墙可能阻止 SSH 端口(22)。需开放。

若 FinalShell 仍连不上,建议先在本地终端用 ssh -i /path/to/key user@host 尝试,通常错误信息更详细。Windows 安装配置疑问:FinalShell Windows 安装指南

使用 FinalShell 连接时,如何查看 Docker 容器的日志进行调试?

查看容器日志是排查 Docker 应用问题的直接方式。FinalShell 终端让你轻松执行 docker logs 命令。

  1. 连接到 Docker 宿主机: 通过 FinalShell 连接到运行容器的宿主机。

  2. 执行 docker logs 命令: FinalShell 终端输入:docker logs [容器名称或ID]。 例如:docker logs my-web-app

  3. 实时跟踪日志: 实时查看新日志,用 -f:docker logs -f [容器名称或ID]。Ctrl+C 停止。

  4. 查看指定行数日志: 看最新几十行日志,用 --tail:docker logs --tail 50 [容器名称或ID]。

  5. 查看带时间戳日志: 加 -t 显示时间戳:docker logs -t [容器名称或ID]。

FinalShell 终端结合 docker logs,极大方便容器日志查看和分析。

常见问题

FinalShell 的会话管理功能对 Docker 开发有什么帮助?

FinalShell 会话管理能保存并组织多个 Docker 宿主机或容器的 SSH 连接。开发中你可能操作不同环境(开发、测试、生产)或多个项目容器。通过为每个环境或容器设置独立连接项,清晰命名(如“dev-host”、“projectA-nginx”),可快速切换和连接,避免重复输入,效率。

FinalShell 连接 Docker 容器时,可以只用密码连接吗?

可以。若按本文开头方法,Dockerfile 中为 SSH 服务设置了 root 密码,并映射了 SSH 端口,FinalShell 添加连接时,选择「密码」认证,输入对应用户名和密码即可。但从安全性角度,尤其生产环境或对外暴露的宿主机,强烈建议使用 SSH 密钥对认证,更安全,是更优实践。

延伸阅读

若需进一步查阅,可先看本站以下教程: