繁体   English   中英

运行一个 python 脚本,它使用 paramiko ssh 进入其他服务器并从 jenkins 执行数据库刷新

[英]Running a python script which uses paramiko to ssh into other server and perform db refresh from jenkins

我有一个 python 脚本,它通过使用 paramiko SSH 连接到另一台服务器,从 ec2 服务器执行一些数据库操作。 当我以 ec2-user 的身份直接从服务器运行该脚本时,该脚本运行良好,但是当我从 Jenkins 运行该脚本时,我在 /home/ec2-user/.ssh/id_rsa 文件上收到权限错误。

使用python3.8 /home/ec2-user/db_refresh.py命令从 Jenkins 运行脚本

经过一些阅读并在whomai命令的帮助下,我发现这是意料之中的,因为 Jenkins 以 Jenkins 用户身份运行脚本,并且所有者的任何部分都没有权限读取 ~/.ssh/ 文件夹中的私钥。

我可以更改权限,以便每个人都可以读取 ec2-user 的私钥,但我认为这将是一个糟糕的主意(据我所知),而且我认为如果除所有者之外的任何人都阅读过 ssh 甚至无法使用对该私钥的许可(我记得在某处读过但不确定)

sshcon = paramiko.SSHClient()
sshcon.connect(MYSQL_HOST, username=SSH_USERNAME, key_filename='/home/ec2-user/.ssh/id_rsa')

这就是使用 paramiko SSH 到我的数据库服务器的方式。

我可以以 ec2-user 的身份从 jenkins 运行我的脚本,还是有其他方法可以克服这个问题。

最后,它变得很简单(愚蠢的我)

我刚刚为 Jenkins 用户创建了一个密钥对,并将其用于我的操作。

需要注意的一件事是因为 jenkins 是服务帐户,所以su jenkins将无法正常工作。 我必须这样做sudo su -s /bin/bash jenkins

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM