![](/img/trans.png)
[英]Running a python script over ssh with paramiko not working as expected
[英]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.