2
파이썬에서 ssh-tunnel을 설정하는 함수를 구현하여 NAT 뒤의 DB에 데이터를 삽입 할 수 있습니다 (포트 포워딩 없음).파이썬 : 원격 서버가 다운 된 후 자동으로 ssh 터널 재 연결
import paramiko
from sshtunnel import SSHTunnelForwarder
def fnc_ssh_tunnel():
try:
sshServer = SSHTunnelForwarder(
(SSH_IP, SSH_PORT),
ssh_username = SSH_USER,
ssh_password = SSH_PASS,
set_keepalive = float(SSH_KEEP_ALIVE),
remote_bind_address = (DB_IP, DB_PORT),
)
sshServer.start()
localPort = sshServer.local_bind_port
logPrint("SSH Tunnel Started to " + str(sshServer.tunnel_bindings), DEBUG_ID)
sshServer.check_tunnels()
return localPort
except Exception as e:
logPrint("Error SSH Tunnel", DEBUG_ID)
logPrint(e,DEBUG_ID)
quit()
이제는 매우 잘 작동하고 있습니다. 이 구현을 통해 나중에 localhost:localport
(localport
이 반환되는 fnc_ssh_tunnel()
에있는 DB)에 대한 연결을 가져옵니다.
어떤 이유로 DB가있는 원격 PC가 재부팅되면 문제가 발생합니다. 그렇다면 PC의 SSH 서버가 모든 연결을 끊어 버리므로 내 SSH 터널도 다운됩니다.
그런 상황에서 복구하려면 파이썬 프로그램을 다시 시작해야합니다.이 경우 터널이 다시 설정됩니다.
원격 서버가 다운 된 경우 ssh-tunnel을 다시 설정하는 좋은 방법이 있습니까?
감사합니다.
서버를 시작한 후 서버가 활성화되어있는 경우가 아니라면, 계속 확인 다시 시작 : 여기 같은 문제에 직면하고 있어요