LoginSignup
0
0

giteaに222ポートのsshでアクセスしてcloneしたりする。あと別のサーバーでポートフォワードしてみる。

Posted at

giteaをdocker composeなどで起動したあと、独自のSSHポートでやっていきたいときがあります。普段のsshは22, giteaは222ポートなど。

~/.ssh/configファイルに下記を書けばポートを指定できます。

Host gitea.example.com
  Hostname gitea.example.com
  IdentityFile ~/.ssh/id_ed25519
  Port 222

これでgitea.example.comからcloneするときは必ずPort222を使ってくれるようになります。

ここまでは非常に初歩的な内容ですが、さらに発展編。

192.168.0.10にメインサーバーがあるとします。こいつとは別に191.168.1.11というVLAN上にgiteaだけが入ったマシーンがあるとしましょう。(proxmoxでlxc上にdockerでgiteaサーバーを立てていると想定してください)
192.168.0.10マシーンは192.168.1.10のIPも持っていて、0番も1番も自由にアクセスできるマシーンだとしましょう。1番帯はfirewall的にoutだけは自由で、inは本当に最低限のポートしか公開していません。

このとき、192.168.0.10から、1.11の3000ポートにあるgiteaにnginxのreverse_proxyでアクセスさせるのは下記のようになります。

server {
  listen 443 ssl;
  server_name: git.example.com;
  ssl_certificate file.crt;
  ssl_certificate_key file.key;
  access_log /var/log/nginx/git.example.com.access.log;
  client_max_body_size 10M;

  location / {
    proxy_pass http://192.168.1.11:3000;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $http_host;
  }
}

これで外部に公開用のサーバーは0.10に限定して、1.11を外部から隔絶させることができますね。

このとき、どうやってSSHのポートをport forwardすれば良いのか?

いろんな方法があると思います(たとえばopnsenseのポートフォワード機能を使用する、など)。

僕が考えたのはHAProxyでポートフォワードをする方法です。こんな感じです。
HAProxyを192.168.0.10マシーンで実行します。cfgはこんな感じ。

defaults
  mode tcp

frontend gitea_ssh
  bind *:222
  default_backend gitea_server

backend gitea_server
  server gitea 192.168.1.11:222 maxconn 32

これで192.168.0.10の222ポートに来た通信を1.11の222にポートフォワードできます。ここで重要なのは、defaultsのmodeをtcpにすることです。こうしておかないとhttp通信をしようとして、うまくsshが繋げません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0