我正在尝试使用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")
Run Code Online (Sandbox Code Playgroud)
这是我在/home/myusername/.ssh/config中的SSH配置:
Host myserver
hostname myserver.net
port 22
IdentityFile ~/.ssh/id_rsa.ppk
Run Code Online (Sandbox Code Playgroud)
关于如何使这个工作的任何想法?
非常感谢
我最后首先从命令行单独测试SSH配置以使该部分正常工作.我认为SSH密钥存在问题,因为我使用PuTTY生成它们,并且该格式可能与Linux使用的OpenSSH不兼容.
所以首先我在我的linux机器上创建了新的SSH密钥而没有私钥的密码,这为我创建了两个文件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")
Run Code Online (Sandbox Code Playgroud)
这是我在/home/myusername/.ssh/config中的SSH配置:
Host myserver
hostname myserver.net
port 22
IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
我从命令行运行时工作正常fab testlive
.
归档时间: |
|
查看次数: |
8866 次 |
最近记录: |