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