相关疑难解决方法(0)

帕拉米科"未知服务器"

我正在尝试开始使用Paramiko库,但是当我尝试连接以下简单程序时,库就会抛出异常:

import paramiko
ssh = paramiko.SSHClient()
ssh.connect('127.0.0.1', username='boatzart', password='mypassword')
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Traceback (most recent call last):
File "test.py", line 6, in <module>
ssh.connect('127.0.0.1')
File "build/bdist.macosx-10.7-intel/egg/paramiko/client.py", line 316, in connect
File "build/bdist.macosx-10.7-intel/egg/paramiko/client.py", line 85, in missing_host_key
paramiko.SSHException: Unknown server 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

无论我尝试哪种服务器都会发生这种情况

python macos ssh paramiko

27
推荐指数
5
解决办法
3万
查看次数

使用私钥通过 pysftp 连接到 SFTP 服务器时出现“找不到主机 ***** 的主机密钥”

所以我在通过 SFTP 连接到远程服务器时遇到了很多问题。我已经尝试过像下面这样的正常方法。

sftp = pysftp.Connection(host='Host',username='username',password='passwd',private_key=".ppk")
Run Code Online (Sandbox Code Playgroud)

哪个不起作用。我收到以下错误:

SSHException: 找不到主机 ***** 的主机密钥。

然后我尝试了以下方法:

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
s = pysftp.Connection(host='host', username='user', password='password', cnopts=cnopts)
Run Code Online (Sandbox Code Playgroud)

这也不起作用。我收到以下错误:

BadAuthenticationType: ('Bad authentication type', ['publickey']) (allowed_types=['publickey'])

同样,当我运行以下命令时:

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect("host",username = "username",password = "password")
ssh_session = client.get_transport().open_session()
Run Code Online (Sandbox Code Playgroud)

我犯了同样的错误:

BadAuthenticationType: ('Bad authentication type', ['publickey']) (allowed_types=['publickey'])

python sftp pysftp

10
推荐指数
1
解决办法
2万
查看次数

使用pysftp下载文件

我正在尝试加载(并直接保存在本地).csv存储在FTP服务器(SFTP协议)上的文件.我正在将Python与pysftp库结合使用.当我检查文件是否存在时,它返回TRUE.但是在尝试加载文件时,无论我尝试什么,它似乎都是空的.

如何将文件存入(并存储)到我的本地环境?我想念一些明显的东西吗?

import pysftp

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None

# Make connection to sFTP
with pysftp.Connection(hostname,
                       username=sftp_username,
                       password=sftp_pw,
                       cnopts = cnopts
                       ) as sftp:
    sftp.isfile('directory/file.csv')) ## TRUE
    file = sftp.get('directory/file.csv')
    print(file) ## None

sftp.close()
Run Code Online (Sandbox Code Playgroud)

python sftp pysftp

8
推荐指数
1
解决办法
2万
查看次数

pysftp vs. Paramiko

我有一个简单的要求在SFTP服务器上删除文件.我发现pysftp和Paramiko库似乎允许我这样做并使用Paramiko开发了一个简单的应用程序,但我找不到比较两者的正确来源,所以我可以决定哪个我可以/应该使用.每种方法的优缺点是什么?

python sftp paramiko python-3.x pysftp

8
推荐指数
1
解决办法
2352
查看次数

Python Pysftp错误

我的代码:

import pysftp 
s = pysftp.Connection(host='test.rebex.net', username='demo', password='password') 
data = s.listdir() 
s.close() 
for i in data: 
    print i
Run Code Online (Sandbox Code Playgroud)

我尝试使用pysftp连接到SFTP服务器时出错.

这应该是直截了当的,但我得到以下错误:

Traceback (most recent call last):
  File "/Users/gavinhinfey/Documents/Python Files/sftp_test.py", line 3, in <module>
    s = pysftp.Connection(host='test.rebex.net', username='demo', password='password')
  File "build/bdist.macosx-10.6-intel/egg/pysftp.py", line 55, in __init__
  File "build/bdist.macosx-10.5-intel/egg/paramiko/transport.py", line 303, in __init__
paramiko.SSHException: Unable to connect to test.rebex.net: [Errno 60] Operation timed out
Exception AttributeError: "'Connection' object has no attribute '_tranport_live'" in <bound     method Connection.__del__ of <pysftp.Connection object at 0x101a5a810>> ignored
Run Code Online (Sandbox Code Playgroud)

我尝试使用不同版本的python(主要是2.7),我已经安装了所有依赖项,并尝试了大量的sftp连接.我正在使用OS X …

python sftp pysftp

7
推荐指数
2
解决办法
2万
查看次数

在 Web 服务器上运行时,Paramiko SSH 失败并显示“Server '...' not found in known_hosts”

我正在尝试使用 Paramiko 在专用网络上的两台服务器之间进行 SSH 通信。客户端服务器是一个 Web 服务器,而主机服务器将是一个“工人”服务器。这个想法是不向 HTTP 连接开放工作服务器。唯一需要发生的通信是 Web 服务器需要将字符串传递给工作服务器上的脚本。为此,我希望使用 Paramiko 并通过 SSH 将信息传递给脚本。

我设置了一个新用户并在 Python 3 中创建了一个测试脚本,当我从我自己用户的 SSH 会话中的命令行运行它时,它可以工作。我将相同的代码放入我的 Django Web 应用程序中,认为它应该可以工作,因为它从命令行测试正常,但出现以下错误:

在 known_hosts 中找不到服务器“worker-server”

现在,我想我明白这个错误了。在执行测试脚本时,我使用某个用户访问服务器,~/.ssh/known_hosts即使该用户实际上是为这项工作创建的第 3 方用户,但已知主机信息仍会保存。因此 Django 应用程序正在另一个用户下运行,该用户找不到已保存的已知主机信息,因为它无权访问该文件夹。据我所知,Apache 用来执行 Django 脚本的用户没有主目录。

有没有办法以Django进程可以看到的方式添加这个已知主机?

脚本:

import paramiko

client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect('worker-server', 22, 'workeruser', 'workerpass')

code = "123wfdv"
survey_id = 111
stdin, stdout, stderr =
    client.exec_command('python3 /path/to/test_script/test.py %s %s' % ( code, survey_id ))

print( "ssh succuessful. Closing connection" )

stdout = stdout.readlines()
client.close()
print ( …
Run Code Online (Sandbox Code Playgroud)

python apache django ssh paramiko

6
推荐指数
1
解决办法
2万
查看次数

使用 pysftp 连接到 SFTP 服务器时出现“无法加载主机密钥”警告

我编写了一个 Python 脚本来使用密钥身份验证连接到 SFTP 服务器。它成功连接到服务器,但显示以下警告(见下文)。它是什么意思以及如何删除它。代码中需要进行哪些更改?

我的代码:

import os
import pysftp
import socket
import paramiko
import time
import os.path
import shutil

IP = "127.0.X.X"
myUsername = "USERNAME"
port = 22

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None

import os
privatekeyfile = os.path.expanduser("C:\\Users\\Rohan\\.ssh\\cool.prv")
mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile)

try:
    with pysftp.Connection(host=IP, username=myUsername,private_key=mykey,cnopts=cnopts) as sftp:
        try:
            r=str(socket.gethostbyaddr(IP))
            print("connection successful with "+r)

        except socket.herror:
            print("Unknown host")
except:
    print("connection failed")
Run Code Online (Sandbox Code Playgroud)

警告:

import os
import pysftp
import socket
import paramiko
import time
import os.path
import shutil

IP = "127.0.X.X" …
Run Code Online (Sandbox Code Playgroud)

python ssh paramiko python-3.x pysftp

6
推荐指数
2
解决办法
3万
查看次数

Python将SFTP服务器上的文件移动到另一个文件夹

我编写了这个脚本来将文件从 SFTP 远程文件夹保存到本地文件夹。然后它从 SFTP 中删除该文件。我想更改它,以便它停止删除文件,而是将它们保存到 SFTP 上的备份文件夹中。我如何在 pysftp 中做到这一点?我找不到任何关于它的文档......

import pysftp

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None

myHostname = "123"
myUsername = "456"
myPassword = "789"

with pysftp.Connection(host=myHostname, username=myUsername, password="789", cnopts=cnopts) as sftp:
    sftp.cwd("/Production/In/")
    directory_structure = sftp.listdir_attr()
    local_dir= "D:/"
    remote_dir = "/Production/"
    remote_backup_dir = "/Production/Backup/"

    for attr in directory_structure:
        if attr.filename.endswith(".xml"):
            file = attr.filename
            sftp.get(remote_dir + file, local_dir + file)
            print("Moved " + file + " to " + local_dir)
            sftp.remove(remote_dir + file)
Run Code Online (Sandbox Code Playgroud)

不要担心我没有主机密钥或密码。一旦我让脚本工作,我就不会保持这种状态:)

python sftp pysftp

6
推荐指数
1
解决办法
2970
查看次数

来自 Linux 的 Python pysftp get_r 在 Linux 上运行良好,但在 Windows 上不起作用

我想使用 Python 2.7 使用 SFTP 递归地将包含文件和子文件夹的整个目录结构从 Linux 服务器复制到本地计算机(Windows 和 Linux)。

我可以在同一台机器上使用 WinSCP ping 服务器并下载文件。

我尝试了以下代码,在 Linux 上运行良好,但在 Windows 上不起作用。

我试过\/os.join,全部给了我同样的错误,检查权限也是如此。

import os
import pysftp

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None    # disable host key checking.
sftp=pysftp.Connection('xxxx.xxx.com', username='xxx', password='xxx', cnopts=cnopts)
sftp.get_r('/abc/def/ghi/klm/mno', 'C:\pqr', preserve_mtime=False)
Run Code Online (Sandbox Code Playgroud)
import os
import pysftp

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None    # disable host key checking.
sftp=pysftp.Connection('xxxx.xxx.com', username='xxx', password='xxx', cnopts=cnopts)
sftp.get_r('/abc/def/ghi/klm/mno', 'C:\pqr', preserve_mtime=False)
Run Code Online (Sandbox Code Playgroud)

python linux windows sftp pysftp

5
推荐指数
1
解决办法
3571
查看次数

将Paramiko AutoAddPolicy与pysftp一起使用

该代码不起作用:

def sftp_connection(self):
    import pysftp
    connection = pysftp.Connection(self.host, username=self.system_name,
                  private_key=os.path.join(HOME, '.ssh', 'id_rsa'))

    # in the next lines I try to use AutoAddPolicy
    client = connection.sftp_client()
    client.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
    client.set_missing_host_key_policy(paramiko.client.AutoAddPolicy)
    return connection
Run Code Online (Sandbox Code Playgroud)

这是例外:

def sftp_connection(self):
    import pysftp
    connection = pysftp.Connection(self.host, username=self.system_name,
                  private_key=os.path.join(HOME, '.ssh', 'id_rsa'))

    # in the next lines I try to use AutoAddPolicy
    client = connection.sftp_client()
    client.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
    client.set_missing_host_key_policy(paramiko.client.AutoAddPolicy)
    return connection
Run Code Online (Sandbox Code Playgroud)

在尝试设置之前,我得到了例外host_key_policy

我找不到通过pysftp访问客户端实例的其他方法。

有没有办法AutoAddPolicy在我得到异常之前进行设置?

还有一个相关的问题。我的问题是关于如何应用旧问题中提供的几种解决方案之一。

python ssh paramiko pysftp

5
推荐指数
1
解决办法
2476
查看次数

标签 统计

python ×10

pysftp ×8

sftp ×6

paramiko ×5

ssh ×4

python-3.x ×2

apache ×1

django ×1

linux ×1

macos ×1

windows ×1