ssh



Sitemap | Profile | タグ一覧
最近の更新
ドライランのありがたみを改めて知る
2024/04/04
伊豆半島
2024/03/31
お出かけチェックリスト
2024/03/29
Ruby
2024/03/27
Kubernetes
2024/03/22
音楽データをDisplayAudioで聞く
2024/03/09
Redmine
2024/02/05
git
2024/02/02
経済
2024/01/08
どうする家康
2023/12/17
MX-Linux
2023/11/06
國體関連学-休学のご連絡
2023/08/13
Debian
2023/08/02
CentOS
2023/06/13
Dell-XPS13
2023/05/23
ベルト
2023/05/18
SourceForge
2023/04/17
確定申告
2023/02/19
さらば「まぐまぐ」
2023/01/09
風猷縄学
2022/11/23


[-] 1. ポートフォワード

いつも忘れてしまうので、図付きでメモっておくφ(..)

凡例:

[-] 1.1. 社内webサーバに外からアクセスする

  • |
    | [client] ==========> [ssh-server.example.com:22]
    |                           |
    |                          --- gateweay
    |                           |
    |                           V
    |                      [www.local.lan:80]
    |
  • 前提
    1. client はアクセス元(自分の個人PC等)
    2. www.local.lan は社内webサーバ
    3. client から ssh-server.exapmle.com に ssh ログインできること。
    4. ssh-server.example.com は www.local.lan にポート80 にアクセスできること。
  • 方法
    1. ポートフォワード起動:
      client$ ssh -N -L 10080:www.local.lan:80 ssh-server.example.com
    2. ブラウザ起動:
      client$ chrome http://localhost:10080/PREFIX/TO/APP
      (ブラウザコマンド・URLの PREFIX/TO/APP は適宜合わせること)

注: ssh を起動しているマシン外からのアクセスをポートフォワードさせる場合、 sshd の GatewayPorts 設定を on にしておく必要がある。 sshd_config(5) を参照。

リバース ポートフォワード(-R オプション)で同じ事を行う。

  • |           gateway
    |              |
    | [client] === | ====> [relay.local.lan]
    |              |            |
    |                           |
    |                           V
    |                      [www.local.lan:80]
  • 前提
    1. client はアクセス元(自分の個人PC等)
    2. www.local.lan は社内webサーバ
    3. relay.local.lan から client に ssh 接続できること
  • 方法
    1. ポートフォワード起動:
      relay$ ssh -N -R 10080:www.local.lan:80 client
    2. ブラウザ起動:
      client$ chrome http://localhost:10080/PREFIX/TO/APP
      (ブラウザコマンド・URLの PREFIX/TO/APP は適宜合わせること)
  • 補足
    • 一つの ssh 起動で複数のポートフォワードが指定できるようだ。 例えば、
      relay$ ssh -N -R 10022:localhost:22 -R 10080:www.local.lan:80 client
      とすると、上の web のポートフォワードの他に client から relay に 10022 経由で ssh ログイン出来る:
      client$ ssh -p 10022 localhost
    • relay.local.lan から client に ssh 接続するけど、アクセスの方向が -L と逆になるので「リバース」なのかな?

注: -L オプションと同様、 ssh を起動しているマシン外からのアクセスをポートフォワードさせる場合、 sshd の GatewayPorts 設定を on にしておく必要がある。 sshd_config(5) を参照。

[-] 1.1.1. com-A を経由して www.local.lan:443 の https に com-A PC からアクセス

  • |           gateway
    |              |
    | [com-A] ==== | ====> [relay.local.lan]
    |    ^         |            |
    |    |                      |
    |    |                      V
    | [com-A-PC]           [www.local.lan:443]
  • 前提
    1. com-A は、会社A の グローバルネットにつながるサーバ等
    2. com-A PCは、会社A の PC 等
    3. www.local.lan は社内webサーバ
    4. relay.local.lan から com-A に ssh 接続できること
  • 方法
    1. ポートフォワード起動:
      relay$ ssh -N -R 10443:www.local.lan:443 com-A
    2. ブラウザ起動:
      com-A-PC$ chrome https://localhost:10443/PREFIX/TO/APP
      (ブラウザコマンド・URLの PREFIX/TO/APP は適宜合わせること)

[-] 1.1.2. その他

  • 用途
    • ファイヤーウォールの外の sshd マシン上 www.ext.jp の ex-port を、 ファイヤーウォール内のマシン in-app のポート in-port に転送する。 フォワード指定するマシンは mymachine とする:
      |                               ex-port
      | [mymachine] <====== | ===== [www.ext.jp]
      |     ↓
      |   in-port
      |  [in-app]
    • 上記構成は、mymachine にて以下のコマンドで実現できる:
      $ ssh -R ex-port:in-app:in-port www.ext.jp
    • こうすることで、www.ext.jp:ex-port にアクセスするアプリは、 in-app:in-port 上で動作するサービスを得ることが出来るようになる。

[-] 1.1.3. 参考

[-] 2. 多段

ググればいくらでもあるわけだけど、僕なりに整理しておこうかと。

やってみると、たしかに便利。 それに、scp, rsync もこれで ok ということなので、かなりよさげ。

[-] 2.1. やりたいこと

LOCAL → GATEWAY → GOAL

の環境で、

ssh GOAL

でつながる、というもの。

[-] 2.2. 方法

LOCAL の ~/.ssh/config に以下を追加記述:

Host GOAL
  ProxyCommand ssh -q -W %h:%p GATEWAY

まあ、実際には GATEWAY → GOAL 接続時、専用秘密鍵指定のための -i オプションがあったりするわけで、その場合は下記となる:

Host GOAL
  ProxyCommand ssh -i 鍵ファイル -q -W %h:%p GATEWAY

参考: http://blog.takuo.jp/2012/03/how-to-multihopped-ssh-login.html

[-] 3. 非管理マシンの自アカウントの鍵にパスフレーズを設定

パスフレーズのないキーペアによる ssh ログインは便利だが、秘密鍵を そのマシンの管理者に盗まれると、無防備なことになってしまう。 そのままパスフレーズ入力なしに私のアカウントにログインでき、 恥ずかしい(いや、大事な)情報を知られたりする…。

マシン管理者のモラルに頼るのではなく、パスフレーズをセットするのが正しい (とは言え、自分がマシン管理者でもあるなら、その恐れは無いわけだ)。

[-] 4. ssh-keygen

アプリ用キーペアの生成

$ ssh-keygen -f ~/.ssh/[APP_NAME].id_rsa

[-] 4.1. パスフレーズ変更

$ ssh-keygen -p [-f keyfile]

[-] 5. ssh server の設定

/etc/ssh/sshd_config の以下をデフォルト値から変更する:

なお、以下は最初から no のはず:

で、sshd 再起動:

$ sudo service ssh restart





Generated by juli 2.3.2