2016-11-18 128 views
0

以下是一個試圖製作服務器的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://stackoverflow.com/help/mcve)。 –

+0

錯誤:root:發生了可怕的事情! 回溯(最近最後調用): 文件 「/Users/vidit/PycharmProjects/untitled6/server.py」,第41行,在 客戶端,ADDR = socket.accept() AttributeError的: '模塊' 對象沒有屬性'接受' 回溯錯誤 –

回答

1

出於安全原因,UNIX操作系統不允許非超級用戶綁定到其結合到這些端口從而典型地作爲根這樣做1024以下服務端口在啓動期間,然後只有在打開套接字後才切換到權限較低的用戶。

使用較高範圍的端口,而不是端口22.