我正在尝试生成一个密钥对,以允许一个 jenkins 服务器通过 ssh 连接到另一个服务器(如果相关,则通过 ssh-steps 插件)。公钥将进入目标主机上的授权密钥。我的理解是它应该很简单,类似于:
sudo su - [jenkins user]
ssh-keygen -t rsa -b 4096 -C jenkinsuser@jenkinshost
然后将密钥保存到/home/jenkinsuser/.ssh/id_rsa
并获取公钥以添加到主机上的授权密钥。
我看到的是,这sudo su - jenkinsuser
不起作用,并/etc/passwd
显示该用户的 shell 已设置为/bin/false
,以禁用登录,正如我理解的那样。
考虑到这一点,我正在寻找指定 ssh 密钥位置的最佳实践,因为用户已禁用登录,因此没有主目录。
答案1
Jenkins 有一个内置的凭证存储这是存放 Jenkins 作业使用的 SSH 密钥的最合适位置。凭据存储用于存储 Jenkins 作业使用的各种凭据,例如 SSH 密钥、用户名/密码和 API 密钥。凭据存储允许委派访问权限并确保敏感凭据不会写入作业输出。
答案2
您不需要以 root 身份运行密钥生成脚本。
我通常将所有密钥存储在 中/etc/ssh
。这是主目录之外的目录,我认为/etc
这是最准确的目录。