49 lines
2 KiB
Python
49 lines
2 KiB
Python
# coding: utf-8
|
|
|
|
import getpass
|
|
import paramiko
|
|
|
|
paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)
|
|
|
|
from base64 import decodebytes
|
|
|
|
PKEY_PATH = "/home/olf/.ssh/westnetz"
|
|
|
|
# First we setup the hostkeys
|
|
# Hardcoded, because I'm a loser
|
|
keydata_jumphost = b'''AAAAB3NzaC1yc2EAAAADAQABAAABAQCo/1QuGzXuAqj3kgfKgVqqPqOeiYsb5s9UlDZNhC+EuFdTwp6jANtVy2IFEMoVfJopSS1kaCTmZVqRg+nf+RTioBsyZ/0BmR3mZ7HtN0DJuucPj0FrguOxFkpDAaobzjLpbk9Ckz+Ji5VJgvJliuel3zvNQpTSXB8S/ryWZ5+wrVAPu5UQUkAezaw+fw7AD69bjQjcPzmKYJ5yIVf3w2aNGM5FXdtcgMH26dHbS5uPhNjSmTgBDtngivb5NP9QqIEtAzIU1WhSc0RQr5OccSiKAkNZ2WrD1IDOOg2tKaWHKqPZ0wQYz4eiD5lhlEhFKuj1SVft/nLAFxhcDgdy7hLR'''
|
|
key_jumphost = paramiko.RSAKey(data=decodebytes(keydata_jumphost))
|
|
keydata_sw_halle = b'''AAAAB3NzaC1yc2EAAAADAQABAAAAgQDFzOaMJ/afAtOpjxv8+4U170nEoi1ngCZ7f5CHL1eQd7P73Y+DzZiJX2h5uYYseBx4OLDElNvLEgR80q8qz1NrLMO3lHR3wXQYiRZyWObUG6sIqD2+VNi7iLDdec3sXVItZk3M5wLm0EpZU9iY6chDFIFF8I2QmCP0S/HLWtgvhQ=='''
|
|
key_sw_halle = paramiko.RSAKey(data=decodebytes(keydata_sw_halle))
|
|
|
|
## get private Key
|
|
key_password = getpass.getpass()
|
|
key = paramiko.RSAKey.from_private_key_file(PKEY_PATH, key_password)
|
|
|
|
|
|
def connect(host, user, pkey, passphrase, gateway=None):
|
|
client = paramiko.SSHClient()
|
|
client.get_host_keys().add('jumphost.lej.westnetz.org', 'ssh-rsa', key_jumphost)
|
|
client.get_host_keys().add('sw-halle.int.westnetz.org', 'ssh-rsa', key_sw_halle)
|
|
sock = None
|
|
if gateway:
|
|
gw_client = connect(gateway, user, pkey, passphrase)
|
|
sock = gw_client.get_transport().open_channel(
|
|
'direct-tcpip', (host, 22), ('', 0)
|
|
)
|
|
kwargs = dict(
|
|
hostname=host,
|
|
port=22,
|
|
passphrase=passphrase,
|
|
pkey=pkey,
|
|
username=user,
|
|
sock=sock,
|
|
allow_agent=False,
|
|
look_for_keys=False,
|
|
disabled_algorithms= dict(pubkeys=['rsa-sha2-256', 'rsa-sha2-512'])
|
|
)
|
|
client.connect(**kwargs)
|
|
return client
|
|
|
|
c = connect("sw-halle.int.westnetz.org", "olf", key, key_password, "jumphost.lej.westnetz.org")
|