没错,管道作业通常会使用用户 jenkins,这意味着需要为此帐户提供 SSH 访问权限才能在管道作业中工作。人们有各种复杂的构建环境,所以这似乎是一个公平的要求。
如其中一个答案所述,每个单独的配置都可能不同,因此请在 Web UI 上的“管理 Jenkins”中的“系统信息”或类似内容下进行检查。主目录和用户名应该分别有一个user.home
和一个user.name
。在我的 CentOS 安装中,它们是“/var/lib/jenkins/”和“jenkins”。
在我们的例子中,首先要做的是以用户 jenkins 的身份获得 shell 访问权限。因为这是一个自动生成的服务帐户,所以默认情况下不启用 shell。假设您可以以 root 身份登录,或者最好以其他用户身份登录(在这种情况下,您需要预先sudo
添加)切换到 jenkins,如下所示:
su -s /bin/bash jenkins
现在您可以验证它真的是 jenkins 并且您输入了正确的主目录:
whoami
echo $HOME
如果这些与您在配置中看到的不匹配,请不要继续。
到目前为止一切都很好,让我们检查一下我们已经拥有的密钥:
ls -lah ~/.ssh
可能只有使用主机名创建的密钥。看看你是否可以使用它们:
ssh-copy-id user@host_ip_address
如果出现错误,您可能需要生成新密钥:
ssh-keygen
如果提示您将新密钥添加到主目录而不覆盖现有密钥,则接受默认值且不输入密码。现在你可以ssh-copy-id
再次运行。
用类似的东西测试它是个好主意
ssh user@host_ip_address ls
如果它有效,那么 Jenkins 作业中的 ssh、scp、rsync 等也应该有效。否则,请检查控制台输出以查看错误消息,并在 shell 上尝试这些确切的命令,如上所述。