python连接通过socks 连接ssh服务

本文介绍如何使用Python的Paramiko库通过SSH隧道进行远程命令执行,包括设置代理、加载私钥、连接多个SSH服务器并执行命令如'uptime'和'su'等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import time
import paramiko
import os
import socks
import socket


#sock = socks.socksocket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '129.39.109.182', 1080, False)
#sock = socks.socksocket
socket.socket = socks.socksocket

PrikeyPath = '/home/allen/.ssh/id_rsa'
keypass = 'shunhong02'
privatekey = os.path.expanduser(PrikeyPath)
key = paramiko.RSAKey.from_private_key_file(privatekey, keypass)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.load_system_host_keys()
ssh.connect('202.81.22.165', 22, username='ftp', pkey=key, timeout=60)
sshtransport = ssh.get_transport()
sshchannel = sshtransport.open_channel("direct-tcpip", ('10.240.142.111', 22), ('202.81.22.165', 22))
ssh.connect('10.240.142.111', port=22, username='test', password='*****',sock=sshchannel)

stdin, stdout, stderr = ssh.exec_command('uptime')
time.sleep(0.1) # some enviroment maybe need this.
stdin.write('root_password_goes_here\n')
stdin.flush()
print(stdout.readlines())
ssh.close()
 

 

 

 

 

 

 

 

import time
import paramiko
import os
import socks
import socket


#sock = socks.socksocket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '129.39.109.182', 1080, False)
#sock = socks.socksocket
socket.socket = socks.socksocket

PrikeyPath = '/home/allen/.ssh/id_rsa'
keypass = 'shunhong02'
privatekey = os.path.expanduser(PrikeyPath)
key = paramiko.RSAKey.from_private_key_file(privatekey, keypass)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.load_system_host_keys()
ssh.connect('202.81.22.165', 22, username='ftp', pkey=key, timeout=60)
sshtransport = ssh.get_transport()
sshchannel = sshtransport.open_channel("direct-tcpip", ('10.240.142.111', 22), ('202.81.22.165', 22))
ssh.connect('10.240.142.111', port=22, username='test', password='*****',sock=sshchannel)

stdin, stdout1, stderr = ssh.exec_command('su - test2',get_pty=True)
stdin.channel.send('shunhong02\n')
stdin.channel.shutdown_write()
stdin, stdout2, stderr = ssh.exec_command('uptime',get_pty=True)
stdin, stdout3, stderr = ssh.exec_command('id',get_pty=True)
time.sleep(0.1) # some enviroment maybe need this.
#stdin.flush()
#print(stdout1.readlines())
print(stdout2.readlines())
print(stdout3.readlines())
ssh.close()
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值