ssh - 在 Docker 镜像上设置 ssh 公钥

标签 ssh key docker sshd authorized-keys

我设置了一个支持 ssh 的 Docker 镜像。没问题,有很多例子。但是,大多数示例都显示使用 passwd 设置密码。我想分发我的图像。拥有固定密码,尤其是 root 密码,似乎是一个巨大的安全漏洞。对我来说,更好的方法是使用没有密码的 root 设置镜像。当用户获取镜像时,他们会将其公共(public) ssh 文件复制到镜像/root/.ssh/authorized_keys 文件。

有推荐的方法吗?

  1. 提供一个使用 ADD 命令在我的镜像上构建的 Dockerfile 该用户可以编辑吗?
  2. 提供一个运行“cat ~/.ssh/authorized_keys | docker run -i sh -c 'cat > root/.ssh/authorized_keys”之类的 shell 脚本?

最佳答案

如何生成私钥并将其显示给用户?

我使用此代码片段作为图像入口点脚本的一部分:

KEYGEN=/usr/bin/ssh-keygen
KEYFILE=/root/.ssh/id_rsa

if [ ! -f $KEYFILE ]; then
  $KEYGEN -q -t rsa -N "" -f $KEYFILE
  cat $KEYFILE.pub >> /root/.ssh/authorized_keys
fi

echo "== Use this private key to log in =="
cat $KEYFILE

关于ssh - 在 Docker 镜像上设置 ssh 公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892340/

相关文章:

php - 规范化 PHP 中数组键的大小写

javascript - 使用 JavaScript 中的一个函数从数组和对象中获取键

docker - 如何使用 Netty 连接到运行 HTTP 服务器的 UNIX 域套接字?

docker - 如何在 Dockerfile 中将 Ubuntu 包/存储库转换为 Alpine?

ssh - VSCode 远程 SSH 连接失败

python - 我可以使用 paramiko 启用 TCPKeepAlive 吗?

mysql - MySQL 5 中的多列主键

docker - 将Docker容器的生成名称传递给docker-compose中的另一个容器

linux - 来自 crontab 的 ssh 返回 'tcgetattr: Invalid argument'

mysql - 在没有开放端口的情况下通过 SSH2 连接到 mysql