Python Paramiko:错误13访问被拒绝

问题描述:

以下是一个试图制作服务器的Python Paramiko脚本。 每当我运行该脚本时,我都会遇到拒绝访问的错误。 错误的详细信息在下面列出。Python Paramiko:错误13访问被拒绝

import socket 
import sys 
import threading 
import paramiko 


from os.path import expanduser 
keypath = expanduser("~/Desktop/test_rsa.key") 
host_key = paramiko.RSAKey(filename=keypath) 

class Server (paramiko.ServerInterface): 
    def __init__(self): 
     self.event = threading.Event() 

    def check_channel_request(self, kind, chanid): 
     if kind == 'session': 
      return paramiko.OPEN_SUCCEEDED 
     return paramiko.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED 

    def check_auth_password(self, username, password): 
     if (username == 'use') and (password == 'pass'): 
      return paramiko.AUTH_SUCCESSFUL 
     return paramiko.AUTH_FAILED 

try: 
    host="" 
    global sock 
    sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
    sock.bind((host,22)) 
    sock.listen(1) 
    print "[+] Listening for connection" 

除例外,E: 打印 “[]听/冰失败:” + STR(E)

try: 
    client,addr=socket.accept() 
    print" [+] got connection from" + str(addr) 
    t=paramiko.Transport(client) 
    t.load_server_moduli() 
    t.add_server_key(host_key) 
    server=Server() 
    t.start_server(server=server) 
    global chan 
    print chan 
    print chan.recv(1024) 
    chan.send("Oh yes I can see that") 

except: 
    print "[-] Conncetion Terminated" 
    pass 

您好,我米试图用的paramiko的帮助下运行服务器脚本。 每当我运行该脚本,我得到以下错误:

[] Listen/Bing Failed:[Errno 13] Permission denied 
[-] Conncetion Terminated 

请帮我把它。

此致

Vidit沙

+0

意味着它说 - 你的操作系统说你不允许做某事。如果您打印了完整的堆栈跟踪信息,而不仅仅是“特征”,那么我们就可以准确地确定哪个调用失败了 - 但无论哪种方式,这可能意味着要查看防火墙规则或文件权限,否则一些操作系统强制执行。 –

+0

......但无论如何,首先从这里开始打印一个堆栈跟踪,并将其包含在您的问题中。顺便说一句,如果只通过没有paramiko的套接字连接就可以产生相同的错误,那么你应该从你的问题中删除paramiko - 构建最小和最简单的产生相同问题的再现器是** M ** inimal为[最小,完整,可验证示例]指定的条件(http://*.com/help/mcve)。 –

+0

错误:root:发生了可怕的事情! 回溯(最近最后调用): 文件 “/Users/vidit/PycharmProjects/untitled6/server.py”,第41行,在 客户端,ADDR = socket.accept() AttributeError的: '模块' 对象没有属性'接受' 回溯错误 –

出于安全原因,UNIX操作系统不允许非超级用户绑定到其结合到这些端口从而典型地作为根这样做1024以下服务端口在启动期间,然后只有在打开套接字后才切换到权限较低的用户。

使用较高范围的端口,而不是端口22.