我可以用ssh连接到服务器,然后用paramiko在服务器上执行sshfs吗?

2024-10-01 00:15:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试用ssh连接到服务器,然后使用paramiko在服务器上挂载一个sshfs工作区。在

我的密码是:

import sys
sys.stderr = open('/dev/null')
import paramiko as pm
sys.stderr = sys.__stderr__
import os

class AllowAllKeys(pm.MissingHostKeyPolicy):
    def missing_host_key(self, client, hostname, key):
        return

HOST = '172.29.121.238'
USER = 'root'
PASSWORD = 'test'

client = pm.SSHClient()
client.load_system_host_keys()
client.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
client.set_missing_host_key_policy(AllowAllKeys())
client.connect(HOST,username=USER,password=PASSWORD)

stdin,stdout,stderr = client.exec_command('sshfs username@server:/source_path /destination_path')

如果我手动操作,应该要求输入服务器上用户名的密码。在

但是,在这里我没有从stdout得到什么:

^{pr2}$

从stderr我得到了对等重设的连接

>>> stderr.read()
b'read: Connection reset by peer\n'

但在这之后,如果我做“pwd”,它会起作用的。如果我做“cd/”,它就不起作用了。在

有人能帮我吗?在

谢谢


Tags: pathkeyimport服务器clienthostparamiko密码
2条回答

您必须使用invoke_shell打开一个交互式shell。通过使用exec_command命令一旦完成执行,通道将被关闭并且不能被重用

我想出来了。我们必须通过invoke_shell()创建一个通道,然后使用send和recv()

channel = client.invoke_shell()
channel.send()
channel.recv(9999)

相关问题 更多 >