python3 paramiko SSHServer rsakey 不从文件中读取 从参数中读取
要使用paramiko模块在Python中创建一个SSH服务器,并使用RSA密钥而不是从文件中读取,可以按照以下步骤操作:
- 导入所需的模块:
import paramiko
from paramiko.rsakey import RSAKey
- 生成RSA密钥对:
private_key = RSAKey.generate(bits=2048)
public_key = private_key.get_base64()
- 创建SSH服务器对象:
server = paramiko.SSHServer()
server.set_subsystem_handler("sftp", paramiko.SFTPServer, sftp_args=(server,))
- 添加RSA密钥对到SSH服务器的主机密钥列表中:
host_key = paramiko.RSAKey(data=private_key)
server.add_server_key(host_key)
- 启动SSH服务器:
server_address = ('', 22) # 服务器地址和端口
server.start_server(server_address)
- 接受客户端连接并进行身份验证:
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,))
- 使用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()
请注意,这只是一个简单的示例代码,你可以根据你的需求进行适当的修改和扩展
原文地址: http://www.cveoy.top/t/topic/iGQ2 著作权归作者所有。请勿转载和采集!