要使用paramiko模块在Python中创建一个SSH服务器,并使用RSA密钥而不是从文件中读取,可以按照以下步骤操作:

  1. 导入所需的模块:
import paramiko
from paramiko.rsakey import RSAKey
  1. 生成RSA密钥对:
private_key = RSAKey.generate(bits=2048)
public_key = private_key.get_base64()
  1. 创建SSH服务器对象:
server = paramiko.SSHServer()
server.set_subsystem_handler("sftp", paramiko.SFTPServer, sftp_args=(server,))
  1. 添加RSA密钥对到SSH服务器的主机密钥列表中:
host_key = paramiko.RSAKey(data=private_key)
server.add_server_key(host_key)
  1. 启动SSH服务器:
server_address = ('', 22)  # 服务器地址和端口
server.start_server(server_address)
  1. 接受客户端连接并进行身份验证:
client, addr = server.accept()
if paramiko.util.is_valid_ipv6_addr(addr[0]):
    print("Accepted connection from ::1")
else:
    print("Accepted connection from " + addr[0])
    
transport = client.get_transport()
transport.set_subsystem_handler("sftp", paramiko.SFTPServer, sftp_args=(server,))
  1. 使用RSA密钥进行身份验证:
transport.add_server_key(host_key)

完整的示例代码如下所示:

import paramiko
from paramiko.rsakey import RSAKey

private_key = RSAKey.generate(bits=2048)
public_key = private_key.get_base64()

server = paramiko.SSHServer()
server.set_subsystem_handler("sftp", paramiko.SFTPServer, sftp_args=(server,))

host_key = paramiko.RSAKey(data=private_key)
server.add_server_key(host_key)

server_address = ('', 22)
server.start_server(server_address)

while True:
    client, addr = server.accept()
    if paramiko.util.is_valid_ipv6_addr(addr[0]):
        print("Accepted connection from ::1")
    else:
        print("Accepted connection from " + addr[0])

    transport = client.get_transport()
    transport.set_subsystem_handler("sftp", paramiko.SFTPServer, sftp_args=(server,))

    transport.add_server_key(host_key)

    # 在这里可以继续处理客户端的连接和操作

    client.close()

请注意,这只是一个简单的示例代码,你可以根据你的需求进行适当的修改和扩展

python3 paramiko SSHServer rsakey 不从文件中读取 从参数中读取

原文地址: http://www.cveoy.top/t/topic/iGQ2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录