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

标签 python ssh fabric

我正在尝试使用 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/

相关文章:

python - 将虚拟值列合并为一列(pd.get_dummies 反转)

mysql - 如何解决 SSH 连接失败的问题?

python - 无法使用 Fabric 和 nohup 真正后台 SSH 隧道

python - 合并最左二等分和最右二等分以查找排序数组中重复项的范围

python - 将渲染的 Holoview 图添加到交互式 Bokeh APP

python - 在 main 中附加已定义类的列表

ubuntu - SSH 中的 "Connection closed by remote host",而在 Putty 中一切正常

linux - 命令 "gcloud compute ssh"和 "ssh"之间的区别

python - 如何使用 fabric 在任意主机、多个平台、Linux 和 Windows 上创建文件夹/目录?

python - 当用户最初输入错误的密码时,Fabric sudo() 捕获不正确的输出