[問題]

看板Python作者 (唬爛)時間5年前 (2018/09/27 17:45), 5年前編輯推噓0(0013)
留言13則, 1人參與, 5年前最新討論串1/2 (看更多)
小弟是學習python半年的菜鳥,想請教ptt各位先進,如何利用python 建立ssh連線,經由跳板機到遠端的設備下指令呢? 路徑: my pc -> jump host -> target machine 有參考網路上的寫法 import paramiko import sys import subprocess vm=paramiko.SSHClient() vm.set_missing_host_key_policy(paramiko.AutoAddPolicy()) vm.connect('jump_host_ip', username='jump_host_username', password='jump_host_password') # vmtransport = vm.get_transport() dest_addr = ('target_machine_ip', 22) local_addr = ('my_pc_ip', 22) vmchannel = vmtransport.open_channel("direct-tcpip", dest_addr, local_addr) # jhost=paramiko.SSHClient() jhost.set_missing_host_key_policy(paramiko.AutoAddPolicy()) jhost.connect('target_machine_ip',username='target_machine_username',password='target_machine_password', sock=vmchannel) # stdin, stdout, stderr = jhost.exec_command("sh clock") # data = stdout.read() print(data.decode("utf-8")) # jhost.close() vm.close() # End 但會出現錯誤 Secsh channel 0 open FAILED: User does not have permission: Administratively prohibited Traceback (most recent call last): File "C:\Users\omc\Desktop\try_jump_host.py", line 16, in <module> vmchannel = vmtransport.open_channel("direct-tcpip", dest_addr, local_addr) File”C:\Users\omc\AppData\Local\Programs\Python\Python36-32\lib\site-packages\paramiko-2.4.1-py3.6.egg\paramiko\transport.py", line 902, in open_channel raise e paramiko.ssh_exception.ChannelException: (1, 'Administratively prohibited') 請問這樣是程式碼有問題,還是說目前的網路環境不允許這樣連線呢? 懇請各位先進指點一二 ----- Sent from JPTT on my Asus ASUS_Z017DA. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.76.172.211 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1538041543.A.625.html

09/29 03:31, 5年前 , 1F
因為你搞錯目標了
09/29 03:31, 1F

09/29 03:33, 5年前 , 2F
("direct-tcpip",(jump_host_ip,22),('127.0.0.1',22))
09/29 03:33, 2F

09/29 03:34, 5年前 , 3F
你的 vm channel 是建立在 my pc -> jump host
09/29 03:34, 3F
好的,十分感謝s大,沒想到真的有人回覆

09/29 03:35, 5年前 , 4F
而不是你上面寫的直接建在 jump_host -> target_mechine
09/29 03:35, 4F

09/29 03:35, 5年前 , 5F
就我所知你要做第二種操作 jump_host 的 sshd config要開
09/29 03:35, 5F

09/29 03:38, 5年前 , 6F
AllowTcpForwarding yes
09/29 03:38, 6F

09/29 03:38, 5年前 , 7F
好像是叫做 reverse proxy
09/29 03:38, 7F

09/29 03:48, 5年前 , 8F
忽略我上面所說,你把 jhost.commect 的 target_machine_
09/29 03:48, 8F

09/29 03:49, 5年前 , 9F
換成 local_addr 就可以了
09/29 03:49, 9F

09/29 11:41, 5年前 , 10F
剛試了一下,你有權限看到跳板的 /etc/ssh/sshd_config
09/29 11:41, 10F

09/29 11:42, 5年前 , 11F
拉到最下面 是否有 Match User jump_host_username
09/29 11:42, 11F

09/29 11:43, 5年前 , 12F
AllowTcpForwarding yes
09/29 11:43, 12F

09/29 11:43, 5年前 , 13F
應該是要打開這個設定才能做TCP forwording
09/29 11:43, 13F
※ 編輯: cc0827 (42.76.172.211), 09/30/2018 00:06:30
文章代碼(AID): #1RhAR7Ob (Python)
討論串 (同標題文章)
文章代碼(AID): #1RhAR7Ob (Python)