ssh 通過跳板機連接到遠程服務器


ssh 通過跳板機連接到遠程服務器

import paramiko
from sshtunnel import SSHTunnelForwarder
import threading


def readData(shell):
    while True:
        data = shell.recv(2048)
        if not data:
            print("quit now")
            break
        data = data.decode()
        print(data, end = "")


def main():
    port104 = 22
    port105 = 22
    localport = 10022
    with SSHTunnelForwarder(ssh_address_or_host=('192.168.1.104', port104), ssh_username="104usr", ssh_password="104pwd",
                            remote_bind_address=("192.168.1.105", port105), local_bind_address=('127.0.0.1', localport)) as tunnel:
        client = paramiko.SSHClient()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        client.connect(tunnel.local_bind_host, tunnel.local_bind_port, username = "105usr", password = "105pwd")
        shell = client.invoke_shell()

        thread = threading.Thread(target=readData, args=(shell,))
        thread.start()

        shell.sendall("pwd\n")
        shell.sendall("ifconfig\n")
        shell.sendall("exit\n")

        thread.join()
        client.close()


if __name__ == '__main__':
    main()

 

上面的代碼通過, 192.168.1.104 連接到 192.168.1.105

其中 192.168.1.104 是跳板機 ip, 192.168.1.105 是我們需要連接的服務器. 某些情況下, 我們無法直接連接到服務器, 而有其它主機可以連接到該服務器時就可以發揮作用了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM