gpt4 book ai didi

python - 无法使用 key 文件使用 Fabric 和 SSH 连接到远程服务器

转载 作者:太空狗 更新时间:2023-10-30 02:12:57 42 4
gpt4 key购买 nike

我正在尝试使用 Fabric python 脚本登录生产服务器,然后远程运行“ls”命令。好吧,我实际上还有很多其他命令要运行,但我从一个简单的列表开始让它工作。我的生产服务器使用 SSH 并被锁定,因此需要私钥文件和密码。

现在我一直在一些网站上阅读有关如何让它工作的信息,但由于某种原因无法让它登录。我认为它连接正常,但出现一条消息说:

“root”的登录密码:

所以我输入了我的密码(与 env.password 中的密码相同),它一直弹出消息。

这是我的 fabfile.py:

from fabric.api import *

env.use_ssh_config = True
env.hosts = ["myserver.net"]
env.user = "root"
env.key_filename = "/home/myusername/.ssh/id_rsa.ppk"
env.password = "mypassword"
env.port = 22

def testlive():
run("ls")

这是我在/home/myusername/.ssh/config 中的 SSH 配置:

Host myserver
hostname myserver.net
port 22
IdentityFile ~/.ssh/id_rsa.ppk

关于如何让它工作的任何想法?

非常感谢

最佳答案

我最终首先从命令行单独测试 SSH 配置,以使该部分正常工作。我认为 SSH key 存在问题,因为我使用 PuTTY 生成它们,并且该格式可能与 Linux 使用的 OpenSSH 不兼容。

所以首先我在我的 linux 机器上创建了新的 SSH key ,没有私钥密码,这为我创建了两个文件 id_rsa 和 id_rsa.pub。然后我将公钥字符串从 id_rsa.pub 复制到生产服务器上的 authorized_keys 文件中。然后我从命令行进行了测试。一旦成功,我就用 Fabric 进行了测试。

因此配置更改为如下所示:

from fabric.api import *

env.use_ssh_config = True
env.hosts = ["myserver"]
env.user = "root"
env.key_filename = "/home/myusername/.ssh/id_rsa"
env.password = ""
env.port = 22

def testlive():
run("ls")

这是我在/home/myusername/.ssh/config 中的 SSH 配置:

Host myserver
hostname myserver.net
port 22
IdentityFile ~/.ssh/id_rsa

现在当我从命令行运行 fab teSTLive 时工作正常。

关于python - 无法使用 key 文件使用 Fabric 和 SSH 连接到远程服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12330712/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com