SSHTunnel
Поэтому мне пришлось исследовать туннель SSH, который создает случайно сгенерированный локальный порт связывания для сопоставления с портом удаленного назначения.
Вскоре после повторных попыток мне удалось получить конечный результат, однако, если вы ищете ответ на проблему, подобную моей, я предоставлю свой код, а также пример, который надеется подойти всем вместо моей конкретной проблемы
from sshtunnel import SSHTunnelForwarder
import paramiko
import time
SSHTunnelForwarder.SSH_TIMEOUT = SSHTunnelForwarder.TUNNEL_TIMEOUT = 5.0
### Setting up the SSHTunnel ###
with SSHTunnelForwarder(
SERV, #IP of 10.10.10.1
ssh_username='admin',
ssh_pkey="...",
remote_bind_address=(SERV, 80), # map the 10.10.10.1 port 80
) as tunnel:
### preliminary SSH connection ###
client = paramiko.SSHClient() # set up SSH connection
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(SERV, username='admin', key_filename='...')
### Setting up the pyvirtualdisplay on local machine ###
display = Display(size=(1024, 768), visible=0) # set virtual window size
display.start()
driver=webdriver.Chrome('/usr/local/bin/chromedriver') # I'm using Chromedriver
print(tunnel.local_bind_port) # this prints the randomly generated local port, for example in my case it would be localhost:32842 and would display the web page of the remote host
time.sleep(5)
URL='http://localhost'+':'+str(tunnel.local_bind_port)
driver.get(URL)
time.sleep(10)
print(driver.title)
screenshot=driver.get_screenshot_as_file('newscreen.png')
упрощенный
with SSHTunnelForwarder(
<REMOTE_HOST IP>,
ssh_username=<ssh_username>,
ssh_pkey=<location of own private key>,
remote_bind_address=(<REMOTE_HOST>, <REMOTE_PORT>),
) as tunnel:
client = paramiko.SSHClient() # set up SSH connection
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(<REMOTE_IP>, username=<ssh_username>, key_filename=<location of own private key>)
display = Display(size=(1024, 768), visible=0)
display.start()
driver=webdriver.Chrome('/usr/local/bin/chromedriver')
print(tunnel.local_bind_port)
while True:
sleep(30)
# ctrl + c to stop program
# Go into own local web browser and enter http://localhost:<local_bind_port> and you should see the web page
Сайт для Chromedriver