[PYTHON] Paramiko : NAT 라우터 주변의 포트 포워딩
PYTHONParamiko : NAT 라우터 주변의 포트 포워딩
Paramiko를 사용하여 항구 포워딩과 관련된 몇 가지 질문을 살펴 보았지만이 특정 상황을 처리하지는 않습니다.
Paramiko를 사용하여 위의 2 단계와 3 단계를 어떻게 실행할 수 있습니까? 본질적으로 다음과 같이 실행하고 싶습니다.
import paramiko
# Create the tunnel connection
tunnel_cli = paramiko.SSHClient()
tunnel_cli.connect(PROXY_HOSTNAME, PROXY_PORT, PROXY_USER)
# Create the forwarded connection and issue commands from LOCAL on the REMOTE box
fwd_cli = paramiko.SSHClient()
fwd_cli.connect('localhost', LOCAL_PORT, REMOTE_USER)
fwd_cli.exec_command('pwd')
해결법
-
==============================
1.Paramiko가 "두포 (Under the Hood)"하고있는 것에 대한 자세한 설명은 @ bitprohet의 블로그에서 찾을 수 있습니다.
Paramiko가 "두포 (Under the Hood)"하고있는 것에 대한 자세한 설명은 @ bitprohet의 블로그에서 찾을 수 있습니다.
위의 구성을 가정하면 코드는 다음과 같이 보입니다.
from paramiko import SSHClient # Set up the proxy (forwarding server) credentials proxy_hostname = 'your.proxy.hostname' proxy_username = 'proxy-username' proxy_port = 22 # Instantiate a client and connect to the proxy server proxy_client = SSHClient() proxy_client.load_host_keys('~/.ssh/known_hosts/') proxy_client.connect( proxy_hostname, port=proxy_port, username=proxy_username, key_filename='/path/to/your/private/key/' ) # Get the client's transport and open a `direct-tcpip` channel passing # the destination hostname:port and the local hostname:port transport = proxy_client.get_transport() dest_addr = ('0.0.0.0', 8000) local_addr = ('127.0.0.1', 1234) channel = transport.open_channel("direct-tcpip", dest_addr, local_addr) # Create a NEW client and pass this channel to it as the `sock` (along with # whatever credentials you need to auth into your REMOTE box remote_client = SSHClient() remote_client.load_host_keys(hosts_file) remote_client.connect('localhost', port=1234, username='remote_username', sock=channel) # `remote_client` should now be able to issue commands to the REMOTE box remote_client.exec_command('pwd')
-
==============================
2.포인트가 유일하게 SSH 명령을 PROXY에서 튕기 는가 아니면 다른 비 SSH 포트도 전달해야합니까?
포인트가 유일하게 SSH 명령을 PROXY에서 튕기 는가 아니면 다른 비 SSH 포트도 전달해야합니까?
REMOTE 상자에 SSH가 필요한 경우 Paramiko는 SSH 수준의 게이트웨이 (PROXY sshd에게 REMOTE에 대한 연결을 열고 LOCAL 대신 SSH 트래픽을 전달하도록 알려줍니다) 및 ProxyCommand 지원 (로컬 명령을 통해 모든 SSH 트래픽을 전달합니다. 원격 상자에 말할 수있는 어떤 것도 될 수 있음).
PROXY가 이미 sshd를 실행하고 있기 때문에 당신이 나에게 전자를 원한 것처럼 들립니다. 패브릭 복사본을 확인하고 '게이트웨이'를 검색하면 Fabric이 Paramiko의 게이트웨이 지원을 사용하는 방법에 대한 지침을 찾을 수 있습니다 (지금 당장 특정 장소를 파 낼 시간이 없습니다).
from https://stackoverflow.com/questions/18968069/paramiko-port-forwarding-around-a-nat-router by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 로깅 모듈에서 줄 바꿈을 억제하십시오. (0) | 2018.11.09 |
---|---|
[PYTHON] 상관 행렬 찾기 (0) | 2018.11.09 |
[PYTHON] SciPy의 지수 곡선 피팅 (0) | 2018.11.09 |
[PYTHON] 동일한 키에 대해 여러 값을 유지하면서 파일을 구성하는 방법은 무엇입니까? (0) | 2018.11.09 |
[PYTHON] 파이썬 사전에 항목을 삭제 한 후 메모리를 되찾기 (0) | 2018.11.09 |