Bastion host(Jump server)에서 내부 서버 접근

jh.cin·2021년 4월 6일
0

Issue

  • 클라우드 서비스(ex) AWS..)는 서버 접근 제어를 위해서 Bastion host를 통해서 접속 권한(user name, private key..) 확인 후 내부 서버의 사설 아이피(Private IP)를 통해 접근한다.
  • Bastion host를 경유하여 직접적으로 내부서버 사설 아이피에 바로 접근하기 위하여 로컬 컴퓨터의 사설 IP와 바인딩(Binding)하는 코드이다.
  • 해당 코드를 활용하여 바인딩된 로컬 컴퓨터의 사설 IP를 통해 클라우드 내부 서버에 직접 접근할 수 있다.

Setup

pip install sshtunnel
pip install paramiko

Code

from sshtunnel import SSHTunnelForwarder
import paramiko

def jump_server_access(private_key_path="./key/private.key",remote_host='host ip',ssh_port=22,remote_user='ubuntu'):
	pkey = paramiko.RSAKey.from_private_key_file(private_key_path)
	server = SSHTunnelForwarder(
	(remote_host, ssh_port),
	ssh_username=remote_user,
	ssh_private_key=pkey,
	remote_bind_address=('private ip', 5000),
	local_bind_address=('127.0.0.1', 5000) # or ip: 0.0.0.0
	)
	server.start()
	return server
    
if __name__ == '__main__':	    
	server=jump_server_access()
	print(server)
	server.stop()
profile
그냥 프로그래머

0개의 댓글