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 から変更を直接クローン作成、コミット、プッシュできます。
2 番目のスクリプトは、Python と Paramiko ライブラリを使用して、PC と VPS 間のファイル転送を自動化します。このスクリプトは、変更されたファイルが多数あり、それらを手動でコピーすることが現実的ではない場合に役立ちます。スクリプトは次のように SSH クライアントを初期化します。 そして、次を使用して SFTP セッションを開きます。 。次に、ローカル ファイルを反復処理し、それらをリモート サーバーにアップロードします。 。 3 番目のスクリプトは、VPS 経由で Git トラフィックをルーティングするために HTTP プロキシを設定します。 SSHトンネルを作成することで、 ssh -L 3128:gitserver:80 user@vps このプロキシを使用するように Git を構成します を使用すると、VPN に直接接続しているかのように Git 操作を実行できます。
SSH トンネルを使用して VPN 経由で Git にプッシュする
Bash を使用して SSH トンネルを作成するスクリプト
# Step 1: Connect to your VPS and create an SSH tunnelssh -L 8888:gitserver:22 user@vps# Step 2: Configure your local Git to use the tunnelgit config --global core.sshCommand 'ssh -p 8888'# Step 3: Clone the repository using the tunnelgit clone ssh://git@localhost:8888/path/to/repo.git# Now you can push changes from your local machine through the VPS tunnelcd repogit add .git commit -m "Your commit message"git push
PC から VPS へのファイル転送を自動化する
Python を使用してファイル転送を自動化するスクリプト
import paramikoimport os# SSH and SFTP detailshostname = 'vps'port = 22username = 'user'password = 'password'local_path = '/path/to/local/files/'remote_path = '/path/to/remote/directory/'# Establish SSH connectionssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(hostname, port, username, password)# Establish SFTP connectionsftp = ssh.open_sftp()# Upload filesfor 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 connectionssftp.close()ssh.close()
プロキシ経由でローカル マシン上で Git を使用する
HTTP プロキシを使用するための Git 構成
# Step 1: Set up an HTTP proxy on your VPSssh -L 3128:gitserver:80 user@vps# Step 2: Configure Git to use the proxygit config --global http.proxy http://localhost:3128# Step 3: Clone the repository using the proxygit clone http://gitserver/path/to/repo.git# Now you can push changes from your local machine through the proxycd repogit add .git commit -m "Your commit message"git push
プロキシとVPNによるGitワークフローの強化
VPS 上の VPN を使用して Git にプッシュするときに考慮すべきもう 1 つの側面は、接続のセキュリティと効率です。パスワードの代わりに SSH キーを使用すると、SSH 接続のセキュリティが大幅に向上します。ローカル マシンで SSH キー ペアを生成し、公開キーを VPS に追加すると、自分のマシンだけが SSH 経由で VPS にアクセスできるようになります。さらに、rsync などのツールを使用すると、PC と VPS の間でファイルを同期するプロセスが合理化され、手動転送にかかる時間を短縮できます。
もう 1 つのアプローチには、継続的インテグレーション/継続的デプロイメント (CI/CD) パイプラインのセットアップが含まれます。 Jenkins や GitLab CI などの CI/CD ツールを統合することで、リポジトリに変更をプッシュするプロセスを自動化できます。これは、ローカル マシンから変更をプルし、VPS 経由で Git サーバーにプッシュするように構成できるため、手動介入の必要性がなくなり、スムーズで効率的なワークフローが確保されます。
- SSH キー ペアを生成するにはどうすればよいですか?
- コマンドを使用する 新しい SSH キー ペアを生成します。
- SSH キーを VPS に追加するにはどうすればよいですか?
- 次を使用して公開キーを VPS にコピーします。 。
- rsync とは何ですか?またその使用方法は何ですか?
- 効率的なファイル転送のためのツールです。使用 ファイルを同期します。
- Git 用の CI/CD パイプラインをセットアップするにはどうすればよいですか?
- Jenkins や GitLab CI などのツールを使用して、Git ワークフローを自動化するように構成します。
- パスワードよりも SSH キーを使用する利点は何ですか?
- SSH キーは、パスワードと比較して、より安全で便利な認証方法を提供します。
- 特定の SSH キーを使用するように Git を構成するにはどうすればよいですか?
- 使用 Git 操作用の SSH キーを指定します。
- PC から VPS へのファイル転送を自動化できますか?
- はい、スクリプトや rsync などのツールを使用してファイル転送を自動化できます。
- SSH 接続の問題をトラブルシューティングするにはどうすればよいですか?
- SSH 構成、ネットワーク設定を確認し、VPS に到達可能であることを確認してください。
- リバース SSH トンネルとは何ですか?
- リバース SSH トンネルは、リモート サーバーからローカル マシンにポートを転送し、リモート サービスへのアクセスを可能にします。
結論として、会社の VPN がインストールされた VPS を使用すると、PC 上の VPN を直接使用せずに Git リポジトリを管理するための実用的なソリューションが提供されます。 SSH トンネリングを利用すると、Git コマンドを VPS 経由でルーティングできるため、ローカル マシンからのシームレスな操作が可能になります。 rsync などのツールを使用してファイル転送を自動化し、CI/CD パイプラインを設定すると、効率がさらに向上します。これらの方法は時間を節約するだけでなく、安全で合理化されたワークフローを保証し、制限されたネットワーク環境で Git を管理する際の課題に対処します。