Skip to content

Instantly share code, notes, and snippets.

@rectalogic
Created December 16, 2015 17:00
Show Gist options
  • Save rectalogic/95f0f1ff6a2e4d440d3f to your computer and use it in GitHub Desktop.
Save rectalogic/95f0f1ff6a2e4d440d3f to your computer and use it in GitHub Desktop.
import socket
import threading
from StringIO import StringIO
import paramiko
HOST, PORT = 'localhost', 2222
HOSTKEY = """
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEINnMNKzog0Cbnun+EKuFu4kcpc0iKJALw5LkC1E1x+9EoAoGCCqGSM49
AwEHoUQDQgAEt11fabDR77CPL/1OUfayQ/m3C1uRI/039pBmYagk4zQ4Mxwow6L6
UkKHL9pHHO3aWdUulY9OU88mT7O8Lg5hyA==
-----END EC PRIVATE KEY-----
"""
class AllAccessServer(paramiko.ServerInterface):
def check_auth_none(self, username):
return paramiko.AUTH_SUCCESSFUL
def check_auth_password(self, username, password):
return paramiko.AUTH_SUCCESSFUL
def check_auth_publickey(self, username, key):
return paramiko.AUTH_SUCCESSFUL
def check_channel_request(self, kind, chanid):
return paramiko.OPEN_SUCCEEDED
def start_server(host, port):
hostkey = paramiko.ECDSAKey.from_private_key(StringIO(HOSTKEY))
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
server_socket.bind((host, port))
server_socket.listen(10)
while True:
conn, address = server_socket.accept()
transport = paramiko.Transport(conn)
transport.load_server_moduli()
transport.add_server_key(hostkey)
transport.set_subsystem_handler("sftp", paramiko.SFTPServer, paramiko.SFTPServerInterface)
transport.start_server(server=AllAccessServer(), event=threading.Event())
if __name__ == '__main__':
start_server(HOST, PORT)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment