我刚通过使用apt-get install命令,按照Debian的安装步骤,在我的Ubuntu服务器上安装了Jenkins。我希望我的构建能够从GitHub上的私有git存储库中拉取代码。为此,我需要使用SSH访问来连接到我的存储库。
大部分搜索结果都说要以Jenkins用户身份登录并为我的GitHub账户生成SSH密钥,但是通过Debian软件包管理器安装时,我没有Jenkins用户的密码。
那么我该如何生成一个供Jenkins服务器使用的SSH密钥呢?
我刚通过使用apt-get install命令,按照Debian的安装步骤,在我的Ubuntu服务器上安装了Jenkins。我希望我的构建能够从GitHub上的私有git存储库中拉取代码。为此,我需要使用SSH访问来连接到我的存储库。
大部分搜索结果都说要以Jenkins用户身份登录并为我的GitHub账户生成SSH密钥,但是通过Debian软件包管理器安装时,我没有Jenkins用户的密码。
那么我该如何生成一个供Jenkins服务器使用的SSH密钥呢?
我预见到有时您会想以jenkins的身份登录以执行其他任务,因此我将解决更一般的问题。最后附上对您问题的严格回答。
在不知道密码的情况下更改jenkins的密码
从具有sudo权限的任何帐户中,您可以将jenkins的密码重置为您选择的密码:
sudo passwd jenkins
使用sudo之前可能会首先要求您输入自己的密码。然后,系统会提示您设置jenkins的新密码,并确认新密码。
如果您有sudo权限的用户名为joe,下面是一个示例会话:
joe $ sudo passwd jenkins
[sudo] password for joe: **you enter joe's passwd**
Enter new UNIX password: ** you enter new jenkins passwd**
Retype new UNIX password: ** you enter new jenkins passwd**
passwd: password updated successfully
另一种方法:以jenkins的身份登录而无需知道他的密码
另外,你可以使用sudo从一个适当的其他帐户登录为jenkins,而不需要输入他的密码:
sudo su - jenkins
注意:避免密码提示混淆
在执行sudo passwd jenkins
命令之前,我们可能需要先通过sudo单独验证身份,以避免混淆出现“我正在被要求输入哪个用户的密码?”的问题。
sudo -v
sudo passwd jenkins
在成功使用sudo进行身份验证后,会有一个窗口期(例如15分钟),在这个时间段内我们不会再被提示重新进行身份验证。(请注意,如果您想实验,可以立即使用sudo -k
来使该会话无效。)
承诺的严格答案
sudo -u jenkins ssh-keygen
然后使用cat命令查看要传递给GitHub的公钥的内容(但路径只是一个示例):
sudo cat ~jenkins/.ssh/id_rsa.pub
公钥文件的确切位置和名称取决于您在ssh-keygen提示中输入的内容。 我已经使用了一个到jenkins主目录的快捷方式,~jenkins
。
相关链接
ssh git@github.com
以添加指纹。还要确保使用git config --global user.email 'jenkins@email.com'
和git config --global user.name 'jenkins'
配置git客户端。 - Dave Long