如何在python语言中使用没有密码的SFTP访问服务器

Posted

技术标签:

【中文标题】如何在python语言中使用没有密码的SFTP访问服务器【英文标题】:how to access server using SFTP without password in python language 【发布时间】:2019-10-04 14:38:51 【问题描述】:

这是通过 paramiko 进行无密码连接的代码 当我运行此代码时,它显示 RSA 私有文件无效 它是什么以及如何解决这个问题

请解释倒数第三行的意思 如何在windows中生成密钥 我正在提供下面的代码,请帮助

代码:

#get IP and username for remote access
IP = input("Enter host_server IP: ").split()
username = input("Enter username: ").split()


#create a file on host_server for file
file_a = open(date+"file.txt", "a") #ignore the date variable
file = str(date+"file.txt")
import paramiko
import os
privatekeyfile = os.path.expanduser('~/.ssh/id_rsa')
mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile)
ssh.connect(IP[0], username = user[0], pkey = mykey)

【问题讨论】:

【参考方案1】:

您需要创建一个 SSH 密钥对,它由私钥和公钥组成。

私钥应该安全地存储在你自己的计算机上,默认情况下在Linux下~/.ssh/id_rsa,或者在Windows下C:\users\your_name\.ssh\id_rsa,但是你可以在同一个目录中使用不同的文件名,这样你就知道它是哪个密钥稍后(您将来可能需要创建更多 SSH 密钥)。这是paramiko使用的文件。

应将公钥复制到服务器。如何完成取决于您的设置。如果它是您自己的 SFTP 服务器,您可以使用 SSH 或 SCP 来实现。您也可以通过 Web 界面进行操作。有关详细信息,请参阅 SFTP 服务器/服务的手册。

可以使用ssh-keygen 创建 SSH 密钥对。在 Linux 上,这可能已经安装。在 Windows 中,如果您安装了 PuTTY,您可能会拥有它。

如果您不知道如何创建密钥,请搜索“生成 ssh 密钥对”或类似内容以获取有关如何创建密钥的更多信息。有许多网站描述了如何做到这一点。

【讨论】:

以上是关于如何在python语言中使用没有密码的SFTP访问服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用密码或 SSH 指纹进行 SFTP 身份验证 WinSCP C# .NET 程序集

如何使用没有密码的 SSH 身份验证连接到 Windows SFTP 服务器? [复制]

sftp如何连接远程

java sftp 报错 Permission denied (没有权限;拒绝访问)

如何在 Ubuntu 上使用公钥和密码设置 SFTP

Python不同电脑之间传输文件实现类似scp功能不输密码