我已经安装了 Jenkins,并且在我的 /etc/passwd 中有 jenkins 作为用户:
jenkins:x:995:993:Jenkins Continuous Integration Server:/var/lib/jenkins:/bin/bash
nginx:x:994:992:Nginx web server:/var/lib/nginx:/sbin/nologin
setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin
Run Code Online (Sandbox Code Playgroud)
我曾尝试在 root 时使用 su - jenkins,但得到以下响应:
[root@li1078-244 ~]# su - jenkins
Last login: Sun Nov 6 02:50:18 UTC 2016 on pts/0
su: failed to execute /bin/bash : No such file or directory
Run Code Online (Sandbox Code Playgroud)
我想 su - jenkins 进入 bash 以便我可以继续一些配置。我以为我会以 jenkins 的身份登录,但我不能,我明白了:
ldco2016@DCortes-MacBook-Pro-3 ~ $ ssh jenkins@localhost [ruby-2.3.1]
jenkins@localhost's password:
Permission denied, please try again.
Run Code Online (Sandbox Code Playgroud)
在许多安装中,Jenkins 用户的登录 shell 设置为false
或nologin
:
$ grep jenkins /etc/passwd
jenkins:x:495:441:Jenkins Continuous Integration Server:/var/lib/jenkins:/bin/false
Run Code Online (Sandbox Code Playgroud)
因此,如果您尝试以 Jenkins 用户身份登录或切换到 Jenkins 用户,系统将不允许这样做。
解决此问题的最佳方法是使用 Jenkins 用户启动 shell:
$ sudo su - jenkins -s/bin/bash
-bash-4.1$ whoami
jenkins
-bash-4.1$ echo $HOME
/var/lib/jenkins
-bash-4.1$
-bash-4.1$ cd .ssh
-bash-4.1$ pwd
/var/lib/jenkins/.ssh
-bash-4.1$
Run Code Online (Sandbox Code Playgroud)
我使用此方法安装 SSH 密钥,我希望 jenkins 服务器能够在 CLI 级别访问这些密钥。