Hur man pushar till Git via VPN på VPS

Hur man pushar till Git via VPN på VPS
Hur man pushar till Git via VPN på VPS

Lösa Git Push-problem med VPN på VPS

Att arbeta med ett säkerhetsföretags projekt involverar ofta åtkomst till Git-repositories via en VPN. Men på grund av vissa problem kanske du inte kan använda företagets VPN direkt på din PC.

I sådana fall kan det hjälpa att använda en VPS med företagets VPN installerat, men det komplicerar Git-hanteringen. Att manuellt kopiera ändrade filer från din PC till VPS är tidskrävande, speciellt när många filer är inblandade. Den här artikeln utforskar hur du pushar till Git direkt från din PC utan att använda företagets VPN.

Kommando Beskrivning
ssh -L 8888:gitserver:22 user@vps Skapar en SSH-tunnel från din lokala maskin till VPS, vidarebefordrar port 8888 till port 22 på git-servern.
git config --global core.sshCommand 'ssh -p 8888' Konfigurerar Git att använda ett specifikt SSH-kommando som inkluderar den anpassade porten skapad av tunneln.
paramiko.SSHClient() Initierar en SSH-klient med hjälp av Paramiko-biblioteket i Python för SSH-anslutningar.
ssh.open_sftp() Öppnar en SFTP-session över en befintlig SSH-anslutning för att underlätta filöverföringar.
sftp.put(local_file, remote_file) Laddar upp en fil från den lokala maskinen till fjärrservern med SFTP.
git config --global http.proxy http://localhost:3128 Ställer in Git att använda en HTTP-proxy, vidarebefordrar förfrågningar via den angivna proxyservern.
ssh -L 3128:gitserver:80 user@vps Skapar en SSH-tunnelvidarebefordransport 3128 på din lokala dator till port 80 på git-servern.

Förstå och implementera VPN Git Push-lösningar

Skripten som tillhandahålls erbjuder lösningar för att använda Git direkt på din PC utan att behöva installera företagets VPN lokalt. Det första skriptet använder SSH-tunnling för att ansluta till VPS och vidarebefordra de nödvändiga portarna. Detta låter dig köra Git-kommandon på din lokala maskin som om den var ansluten till VPN. Genom att använda kommandot ssh -L 8888:gitserver:22 user@vps, skapar du en tunnel som vidarebefordrar port 8888 på din lokala dator till port 22 på Git-servern. Du konfigurerar sedan Git att använda den här tunneln med git config --global core.sshCommand 'ssh -p 8888'. Den här metoden gör att du kan klona, ​​commit och pusha ändringar direkt från din PC.

Det andra skriptet automatiserar filöverföringar mellan din PC och VPS med Python och Paramiko-biblioteket. Det här skriptet är användbart när det finns många ändrade filer och att manuellt kopiera dem är opraktiskt. Skriptet initierar en SSH-klient med paramiko.SSHClient() och öppnar en SFTP-session med hjälp av ssh.open_sftp(). Den itererar sedan genom de lokala filerna och laddar upp dem till fjärrservern med sftp.put(local_file, remote_file). Det tredje skriptet ställer in en HTTP-proxy för att dirigera Git-trafik genom VPS. Genom att skapa en SSH-tunnel med ssh -L 3128:gitserver:80 user@vps och konfigurera Git att använda denna proxy med git config --global http.proxy http://localhost:3128, kan du utföra Git-operationer som om du var ansluten direkt till VPN.

Använda SSH-tunnlar för att pusha till Git via VPN

Skript med Bash för att skapa en SSH-tunnel

# 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

Automatisera filöverföring från PC till VPS

Skript med Python för att automatisera filöverföringar

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()

Använda Git på lokal maskin via proxy

Git-konfiguration för att använda en HTTP-proxy

# 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

Förbättra Git Workflow med proxy och VPN

En annan aspekt att tänka på när du trycker på Git med hjälp av ett VPN på en VPS är säkerheten och effektiviteten för anslutningarna. Att använda SSH-nycklar istället för lösenord kan avsevärt förbättra säkerheten för dina SSH-anslutningar. Att generera ett SSH-nyckelpar på din lokala dator och lägga till den publika nyckeln till VPS säkerställer att endast din maskin kan komma åt VPS via SSH. Dessutom kan användning av verktyg som rsync effektivisera processen att synkronisera filer mellan din PC och VPS, vilket minskar tiden som läggs på manuella överföringar.

Ett annat tillvägagångssätt innebär att sätta upp en pipeline för kontinuerlig integration/kontinuerlig distribution (CI/CD). Genom att integrera ett CI/CD-verktyg som Jenkins eller GitLab CI, kan du automatisera processen att driva ändringar till förvaret. Detta kan konfigureras för att hämta ändringar från din lokala dator och skicka dem till Git-servern genom VPS, vilket eliminerar behovet av manuellt ingripande och säkerställer ett smidigt och effektivt arbetsflöde.

Vanliga frågor och svar om att använda Git med VPN och VPS

  1. Hur genererar jag ett SSH-nyckelpar?
  2. Använd kommandot ssh-keygen -t rsa -b 4096 -C "your_email@example.com" för att generera ett nytt SSH-nyckelpar.
  3. Hur lägger jag till min SSH-nyckel till VPS?
  4. Kopiera din publika nyckel till VPS med ssh-copy-id user@vps.
  5. Vad är rsync och hur använder jag det?
  6. rsync är ett verktyg för effektiv filöverföring. Använda sig av rsync -avz /local/path user@vps:/remote/path för att synkronisera filer.
  7. Hur kan jag ställa in en CI/CD-pipeline för Git?
  8. Använd verktyg som Jenkins eller GitLab CI och konfigurera dem för att automatisera ditt Git-arbetsflöde.
  9. Vad är fördelen med att använda SSH-nycklar framför lösenord?
  10. SSH-nycklar ger ett säkrare och bekvämare sätt att autentisera jämfört med lösenord.
  11. Hur konfigurerar jag Git att använda en specifik SSH-nyckel?
  12. Använda sig av git config core.sshCommand "ssh -i /path/to/ssh_key" för att ange SSH-nyckeln för Git-operationer.
  13. Kan jag automatisera filöverföringar från min dator till VPS?
  14. Ja, du kan använda skript och verktyg som rsync för att automatisera filöverföringar.
  15. Hur felsöker jag SSH-anslutningsproblem?
  16. Kontrollera din SSH-konfiguration, nätverksinställningar och se till att VPS är tillgänglig.
  17. Vad är en omvänd SSH-tunnel?
  18. En omvänd SSH-tunnel vidarebefordrar en port från fjärrservern till din lokala maskin, vilket möjliggör åtkomst till fjärrtjänster.

Sammanfattning av lösningar och fördelar

Sammanfattningsvis, att använda en VPS med företagets VPN installerad ger en praktisk lösning för att hantera Git-förråd utan att direkt använda VPN på din PC. Genom att utnyttja SSH-tunnling kan du dirigera dina Git-kommandon genom VPS, vilket möjliggör sömlösa operationer från din lokala maskin. Att automatisera filöverföringar med verktyg som rsync och konfigurera en CI/CD-pipeline förbättrar effektiviteten ytterligare. Dessa metoder sparar inte bara tid utan säkerställer också ett säkert och strömlinjeformat arbetsflöde, som tar itu med utmaningarna med att hantera Git i en begränsad nätverksmiljö.