1.创建用户和密钥对

#创建用户
useradd jenkins
#生成密钥对(建议在其他机器生成)
ssh-keygen -t rsa -b 2048 -f id_rsa
Enter passphrase (empty for no passphrase):
9dmT2XpiIM1h7I
#会在当前路径生成两个文件
id_rsa:你的私钥。
id_rsa.pub:你的公钥。

#创建authorized_keys配置文件。
sudo mkdir /home/jenkins/.ssh
sudo touch /home/jenkins/.ssh/authorized_keys
#添加公钥。
sudo vim /home/jenkins/.ssh/authorized_keys
#将你的公钥内容粘贴到文件中。可配置多个公钥,每个公钥占一行。配置完成后保存并关闭文件。

#设置文件权限。

#SSH 要求严格的权限设置,错误的权限会导致 SSH 登录失败。

#运行以下命令,设置正确的权限。

 
sudo chown -R jenkins:jenkins /home/jenkins/.ssh
sudo chmod 700 /home/jenkins/.ssh
sudo chmod 600 /home/jenkins/.ssh/authorized_keys

2.开启SSH服务的公钥认证功能

配置公钥后,必须在服务器上启用 SSH 公钥认证。否则,密钥登录会失败。

备份SSH配置文件/etc/ssh/sshd_config

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  1. 使用文本编辑器(如 Vim)打开/etc/ssh/sshd_config文件,并找到PubkeyAuthentication参数,设置为yes,代表开启公钥认证功能。

sudo vim /etc/ssh/sshd_config
  1. 重启SSH服务以应用更改。

以Alibaba Cloud Linux 3为例:

sudo systemctl restart sshd

3.文件授权

由于不能改变 /opt 下文件的归属,推荐使用以下两种方式之一:

方式一:使用 ACL(访问控制列表)- 推荐
bash
# 给jenkins用户授予/opt目录及子目录中脚本和可执行文件的执行权限
sudo setfacl -R -m u:jenkins:rx /opt

# 设置默认ACL,确保新创建的文件也具有相应权限
sudo setfacl -R -d -m u:jenkins:rx /opt