VPS에서 VPN을 통해 Git으로 푸시하는 방법

SSH Tunneling

VPS에서 VPN으로 Git 푸시 문제 해결

보안 회사의 프로젝트 작업에는 VPN을 통해 Git 저장소에 액세스하는 작업이 포함되는 경우가 많습니다. 하지만 일부 문제로 인해 회사의 VPN을 PC에서 직접 사용하지 못할 수도 있습니다.

이러한 경우 회사의 VPN이 설치된 VPS를 사용하면 도움이 될 수 있지만 Git 관리가 복잡해집니다. 변경된 파일을 PC에서 VPS로 수동으로 복사하는 것은 시간이 많이 소요되며, 특히 많은 파일이 관련된 경우에는 더욱 그렇습니다. 이 기사에서는 회사의 VPN을 사용하지 않고 PC에서 직접 Git으로 푸시하는 방법을 살펴봅니다.

명령 설명
ssh -L 8888:gitserver:22 user@vps 로컬 시스템에서 VPS로 SSH 터널을 생성하여 포트 8888을 git 서버의 포트 22로 전달합니다.
git config --global core.sshCommand 'ssh -p 8888' 터널에서 생성된 사용자 지정 포트가 포함된 특정 SSH 명령을 사용하도록 Git을 구성합니다.
paramiko.SSHClient() SSH 연결을 위해 Python의 Paramiko 라이브러리를 사용하여 SSH 클라이언트를 초기화합니다.
ssh.open_sftp() 파일 전송을 용이하게 하기 위해 기존 SSH 연결을 통해 SFTP 세션을 엽니다.
sftp.put(local_file, remote_file) SFTP를 사용하여 로컬 시스템에서 원격 서버로 파일을 업로드합니다.
git config --global http.proxy http://localhost:3128 HTTP 프록시를 사용하도록 Git을 설정하고 지정된 프록시 서버를 통해 요청을 전달합니다.
ssh -L 3128:gitserver:80 user@vps 로컬 시스템의 포트 3128을 Git 서버의 포트 80으로 전달하는 SSH 터널을 만듭니다.

VPN Git 푸시 솔루션 이해 및 구현

제공된 스크립트는 회사의 VPN을 로컬에 설치할 필요 없이 PC에서 직접 Git을 사용할 수 있는 솔루션을 제공합니다. 첫 번째 스크립트는 SSH 터널링을 사용하여 VPS에 연결하고 필요한 포트를 전달합니다. 이를 통해 마치 VPN에 연결된 것처럼 로컬 컴퓨터에서 Git 명령을 실행할 수 있습니다. 명령을 사용하여 , 로컬 시스템의 포트 8888을 Git 서버의 포트 22로 전달하는 터널을 생성합니다. 그런 다음 이 터널을 사용하도록 Git을 구성합니다. . 이 방법을 사용하면 PC에서 직접 변경 사항을 복제, 커밋 및 푸시할 수 있습니다.

두 번째 스크립트는 Python과 Paramiko 라이브러리를 사용하여 PC와 VPS 간의 파일 전송을 자동화합니다. 이 스크립트는 변경된 파일이 많을 때 유용하며 수동으로 복사하는 것은 실용적이지 않습니다. 스크립트는 다음을 사용하여 SSH 클라이언트를 초기화합니다. 다음을 사용하여 SFTP 세션을 엽니다. . 그런 다음 로컬 파일을 반복하고 다음을 사용하여 원격 서버에 업로드합니다. . 세 번째 스크립트는 VPS를 통해 Git 트래픽을 라우팅하도록 HTTP 프록시를 설정합니다. SSH 터널을 생성하여 ssh -L 3128:gitserver:80 user@vps 이 프록시를 사용하도록 Git을 구성합니다. 를 사용하면 마치 VPN에 직접 연결된 것처럼 Git 작업을 수행할 수 있습니다.

SSH 터널을 사용하여 VPN을 통해 Git에 푸시

SSH 터널 생성을 위해 Bash를 사용하는 스크립트

# Step 1: Connect to your VPS and create an SSH tunnel
ssh -L 8888:gitserver:22 user@vps

# Step 2: Configure your local Git to use the tunnel
git config --global core.sshCommand 'ssh -p 8888'

# Step 3: Clone the repository using the tunnel
git clone ssh://git@localhost:8888/path/to/repo.git

# Now you can push changes from your local machine through the VPS tunnel
cd repo
git add .
git commit -m "Your commit message"
git push

PC에서 VPS로 파일 전송 자동화

Python을 사용하여 파일 전송을 자동화하는 스크립트

import paramiko
import os

# SSH and SFTP details
hostname = 'vps'
port = 22
username = 'user'
password = 'password'
local_path = '/path/to/local/files/'
remote_path = '/path/to/remote/directory/'

# Establish SSH connection
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname, port, username, password)

# Establish SFTP connection
sftp = ssh.open_sftp()

# Upload files
for file in os.listdir(local_path):
    local_file = os.path.join(local_path, file)
    remote_file = os.path.join(remote_path, file)
    sftp.put(local_file, remote_file)

# Close connections
sftp.close()
ssh.close()

프록시를 통해 로컬 머신에서 Git 사용

HTTP 프록시를 사용하기 위한 Git 구성

# Step 1: Set up an HTTP proxy on your VPS
ssh -L 3128:gitserver:80 user@vps

# Step 2: Configure Git to use the proxy
git config --global http.proxy http://localhost:3128

# Step 3: Clone the repository using the proxy
git clone http://gitserver/path/to/repo.git

# Now you can push changes from your local machine through the proxy
cd repo
git add .
git commit -m "Your commit message"
git push

프록시 및 VPN으로 Git 워크플로 향상

VPS에서 VPN을 사용하여 Git으로 푸시할 때 고려해야 할 또 다른 측면은 연결의 보안과 효율성입니다. 비밀번호 대신 SSH 키를 사용하면 SSH 연결의 보안이 크게 향상될 수 있습니다. 로컬 컴퓨터에서 SSH 키 쌍을 생성하고 VPS에 공개 키를 추가하면 귀하의 컴퓨터만 SSH를 통해 VPS에 액세스할 수 있습니다. 또한 rsync와 같은 도구를 사용하면 PC와 VPS 간의 파일 동기화 프로세스를 간소화하여 수동 전송에 소요되는 시간을 줄일 수 있습니다.

또 다른 접근 방식은 CI/CD(지속적 통합/지속적 배포) 파이프라인을 설정하는 것입니다. Jenkins 또는 GitLab CI와 같은 CI/CD 도구를 통합하면 저장소에 변경 사항을 푸시하는 프로세스를 자동화할 수 있습니다. 로컬 시스템에서 변경 사항을 가져와서 VPS를 통해 Git 서버로 푸시하도록 구성할 수 있으므로 수동 개입이 필요 없으며 원활하고 효율적인 작업 흐름이 보장됩니다.

  1. SSH 키 쌍을 어떻게 생성하나요?
  2. 명령을 사용하십시오 새로운 SSH 키 쌍을 생성합니다.
  3. VPS에 SSH 키를 어떻게 추가하나요?
  4. 다음을 사용하여 공개 키를 VPS에 복사하세요. .
  5. rsync란 무엇이며 어떻게 사용합니까?
  6. 효율적인 파일 전송을 위한 도구입니다. 사용 파일을 동기화합니다.
  7. Git용 CI/CD 파이프라인을 어떻게 설정하나요?
  8. Jenkins 또는 GitLab CI와 같은 도구를 사용하고 Git 워크플로를 자동화하도록 구성하세요.
  9. 비밀번호 대신 SSH 키를 사용하면 어떤 이점이 있나요?
  10. SSH 키는 비밀번호에 비해 더 안전하고 편리한 인증 방법을 제공합니다.
  11. 특정 SSH 키를 사용하도록 Git을 구성하려면 어떻게 해야 합니까?
  12. 사용 Git 작업을 위한 SSH 키를 지정합니다.
  13. 내 PC에서 VPS로 파일 전송을 자동화할 수 있나요?
  14. 예, rsync와 같은 스크립트 및 도구를 사용하여 파일 전송을 자동화할 수 있습니다.
  15. SSH 연결 문제를 해결하려면 어떻게 해야 합니까?
  16. SSH 구성, 네트워크 설정을 확인하고 VPS에 연결할 수 있는지 확인하세요.
  17. 역방향 SSH 터널이란 무엇입니까?
  18. 역방향 SSH 터널은 원격 서버에서 로컬 시스템으로 포트를 전달하여 원격 서비스에 대한 액세스를 가능하게 합니다.

결론적으로 회사의 VPN이 설치된 VPS를 사용하면 PC에서 VPN을 직접 사용하지 않고도 Git 리포지토리를 관리할 수 있는 실용적인 솔루션을 제공할 수 있습니다. SSH 터널링을 활용하면 VPS를 통해 Git 명령을 라우팅하여 로컬 시스템에서 원활한 작업을 수행할 수 있습니다. rsync와 같은 도구를 사용하여 파일 전송을 자동화하고 CI/CD 파이프라인을 설정하면 효율성이 더욱 향상됩니다. 이러한 방법은 시간을 절약할 뿐만 아니라 안전하고 효율적인 워크플로를 보장하여 제한된 네트워크 환경에서 Git 관리 문제를 해결합니다.