社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker Compose上ssh的初始设置

whitebear • 5 年前 • 1781 次点击  

我用Docker做MacOS/Win。

我通过Docker容器中shell的ssh连接到外部服务器,

目前,我在Docker shell中生成ssh密钥,并手动将sshkey发送到服务器。

但是在这个方法中,每次我重新构建容器时,sshkey都会被删除。

所以我想在构建映像时设置初始sshkey。

我有2个想法

  1. 将.ssh文件夹从我的macos安装到docker文件夹并保持不变。 (权限控制可能很困难且复杂…)

  2. 编写使ssh keymake&发送到docker-compose.yml或dockerfile中的服务器的脚本。 (每次我构建时,都会发送新密钥…??)

哪个是最佳实践?或者您是否知道自动设置ssh密钥??

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37948
 
1781 次点击  
文章 [ 2 ]  |  最新文章 5 年前
nrapopor
Reply   •   1 楼
nrapopor    6 年前

在阅读“我是Windows用户…”评论后,我认为您解决的问题是错误的。您正在寻找对服务器的简单(健全)shell访问。这是两个简单的解决方案。 1。Windows Linux子系统-- https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux . (不是我的选择)

  1. CygWin—— http://www.cygwin.com --对于你的命令来说,Linux是一种舒适的感觉。

如何安装。

  1. 下载并安装它(注意只选择您需要的基础以外的功能。(有很多而且大部分都是您不需要的——比如编译器和X)。确保选择了ssh。不用担心,您可以根据需要多次重新运行安装程序(我偶尔这样做是为了更新我使用的内容)

  2. 启动bash shell(安装后将有一个链接) 跑 'cygpath-wp$path' B.看看结果——在路径的开头会有几个文件夹,看起来像“c:\cygwin\b in;c:\cygwin\usr\local\b in;…”只要您将cygwin安装到“c:\cygwin”目录中,所有以“c:\cygwin”开头的路径就可以了。 c.将这些路径添加到系统路径中 d.启动一个新的命令实例。运行 “LS” 它现在应该可以直接在WindowsShell下工作。

  3. 额外贷款。

    a.将C:\cygwin\home\<username>目录中第一次启动shell时创建的所有“.xxx”文件移动到Windows Home目录(C:\users\<username>)。

    B.退出所有正在运行的bash shell

    c.删除c:\cygwin\home目录

    d.使用Windows mklink实用程序在cygwin下创建一个名为home的链接,指向c:\users(管理员shell) 'mklink/j c:\cygwin\home c:\users' 这将使Windows主目录与Cygwin主目录相同。

之后,您将按照cygwin bash下ssh的正常设置进行操作,并且您将能够生成密钥并将它们正常分发到服务器。

注意:您必须将凭据从Windows传播到您的<home>/。ssh文件夹(在文件夹的安全设置中)只保留您的用户ID。然后为使用ssh适当地设置文件夹和下面的各种密钥文件的权限。 “CHMOD” .

享受——有些日子我不得不眯着眼睛想起来我在一个窗户上…

David Maze
Reply   •   2 楼
David Maze    6 年前

最佳实践通常是不从容器进行出站ssh连接。如果要添加到容器中的是二进制代码或应用程序代码,请在Docker之外管理源代码管理设置,并将数据复制到图像中。如果应用程序需要运行其数据,请再次从外部获取并使用 docker run -v 把它注入容器。

正如您所说,安全地管理这个关键材料,并遵守sshs-unix权限要求,是非常棘手的。如果我真的没有选择,但要做这个ID,请编写一个入口点脚本,将私钥从绑定装载的卷复制到容器用户。 .ssh 目录。但我的第一选择是重新设计我的应用程序流,根本不需要这个。