FinalShell
FinalShell 玩转 Docker:SSH 连接、文件传输和端口转发实用技巧
大家好!FinalShell 作为强大的 SSH 客户端,让服务器管理变得简单。但涉及到 Docker 容器时,不少朋友会遇到连接、文件传输或调试上的疑问。这篇文章将通过问答形式,教你如何用 FinalShell 高效管理 Docker 容器,让开发调试更顺畅。
FinalShell 玩转 Docker:SSH 连接、文件传输和端口转发实用技巧
FinalShell 怎么连接到 Docker 容器内部的 SSH 服务?
想直接 SSH 到 Docker 容器内部?FinalShell 4.8.9 版本及以上支持。容器默认不带 SSH 服务,需先配置。
操作步骤:
-
修改 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 . -
运行容器并映射 SSH 端口: 将容器 22 端口映射到宿主机未占用端口(如 2222):
docker run -d -p 2222:22 --name my-ssh-container my-app-with-ssh -
在 FinalShell 中配置连接: FinalShell 中新增 SSH 连接。
- 主机: Docker 宿主机 IP。
- 端口:
2222。 - 认证: 「密码」,用户名
root,密码是你设置的。 即可通过 FinalShell SSH 到容器内部。密钥认证参考:FinalShell SSH 密钥配置指南

怎么在 FinalShell 里高效地传输文件到 Docker 容器?
文件传输是开发必备。如果容器已按上面步骤配置好 SSH,FinalShell 的 SFTP 功能就能大显身手。
-
使用 FinalShell 的 SFTP 面板: 连接到容器 SSH 服务后,右侧文件管理器面板就是 SFTP 客户端。直接拖拽、上传、下载、编辑,比
docker cp直观高效。 -
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 宿主机?
我踩过一个坑,有次私钥文件随意放,导致连不上。排查发现是密钥权限问题。
连接失败常见原因:
- 密钥文件权限: SSH 私钥文件权限严格。Linux 上
.ssh/id_rsa权限应为600。Windows 上,确保私钥文件(.ppk或.pem)仅当前用户只读。 - 私钥路径不正确: 检查 FinalShell 配置中私钥路径。
- 公钥未添加到
authorized_keys: 公钥内容须添加到宿主机的/root/.ssh/authorized_keys,并确保该文件权限为600或644。 - SSH 服务配置: 宿主机
sshd可能未启用密钥认证,或配置文件 (/etc/ssh/sshd_config) 有误。 - 防火墙阻止: 宿主机防火墙可能阻止 SSH 端口(22)。需开放。
若 FinalShell 仍连不上,建议先在本地终端用 ssh -i /path/to/key user@host 尝试,通常错误信息更详细。Windows 安装配置疑问:FinalShell Windows 安装指南
使用 FinalShell 连接时,如何查看 Docker 容器的日志进行调试?
查看容器日志是排查 Docker 应用问题的直接方式。FinalShell 终端让你轻松执行 docker logs 命令。
-
连接到 Docker 宿主机: 通过 FinalShell 连接到运行容器的宿主机。
-
执行
docker logs命令: FinalShell 终端输入:docker logs [容器名称或ID]。 例如:docker logs my-web-app -
实时跟踪日志: 实时查看新日志,用
-f:docker logs -f [容器名称或ID]。Ctrl+C停止。 -
查看指定行数日志: 看最新几十行日志,用
--tail:docker logs --tail 50 [容器名称或ID]。 -
查看带时间戳日志: 加
-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 密钥对认证,更安全,是更优实践。
延伸阅读
若需进一步查阅,可先看本站以下教程: