リバーストンネル+ローカル転送用のSSH設定の作成

リバーストンネル+ローカル転送用のSSH設定の作成

~/.ssh/config エントリを作成しようとしています。次のシナリオの場合:

LinuxボックスプライベートネットワークではVPSサーバーどこでもアクセス可能ローカルMacBook

Linuxボックスはファイアウォールの背後にありますが、まだローカルのMacBookからボックスにSSHとして接続できます。


現在作業しているソリューションは次のとおりです。

Linuxボックスは、次のようにvpsのリバーストンネルを起動します。

ssh -R 15000:localhost:22 vps-user@vps

その後、私のローカルMacbookから、以下を介してVPNにトンネルを起動します。

ssh -L 12345:localhost:1500 vps-user@vps

その後、別のsshコマンドを起動し、そこからファイアウォールなどの後ろに隠されているLinuxボックスに直接sshを実行できます。

ssh linuxbox-user@localhost -p 12345

まず第一に、これはすべて非常に信頼性があります(これを行うより簡単な方法があれば教えてください。これはMacBookの面でやや面倒です)。

最良のシナリオでは、〜/.ssh/configエントリをどのように生成しますか?次のように書きます。

ssh linuxbox

ここは終わりですか?

使ってみました。地域配信このオプションを使用すると、少なくともSSH -L ...コマンドですが、まだ2番目のsshコマンドが必要です。

私も試しましたプロキシコマンドオプションがありますが運がありません。設定が間違っている可能性があります。

答え1

最も簡単な方法は、おそらくあなたの場合は不要に見えるローカル配信を避け、ディレクティブを利用することです。ProxyJumpこれにより、1つ以上のジャンププロキシ(たとえば、接続する1つ以上の中間ホストと到着ホスト)を指定できます。 from)宛先ホスト)。

2つの接続が必要です。

  1. Linuxホストからvpsへのリモート転送を設定しました。

    ssh -R 15000:localhost:22 vps-user@vps
    

    22あなたの質問で提案されているようにポートのVPNに接続できるとします。
    これにより、vpsはポートから受信した接続をLinuxボックスの15000ポートに転送します。22

  2. ローカルのMacBookからvpsへの接続:

    ssh -J vps-user@vps -p 15000 linuxbox-user@localhost
    

    -J指定されたコマンドへのショートカットですProxyJump(マンページを参照ssh(1))。
    繰り返しますが、これはポートからVPNに接続できることを意味します22
    このコマンドはローカルのMacBookを22vpsのポートに接続し、そこから15000同じvpsのポート(Linuxボックスがリッスンしている)に接続するため、追加の接続なしでLinuxボックスにログインできます。

その.ssh/configファイルは次のとおりです。

  • Linuxマシンでは:

    Host vps
        RemoteForward 15000 localhost:22
        User          vps-user
    

    これにより、簡単に次のように入力できます。

    ssh vps
    
  • ローカルMacBookの場合:

    Host linuxbox
        ProxyJump vps-user@vps
        Hostname  localhost
        Port      15000
        User      linuxbox-user
    

    これにより、以下を発行できます。

    ssh linuxbox
    

公開鍵認証を使用している場合(少なくともリモート転送の無人設定を許可する場合)、IdentityFileこのディレクティブを両方のファイル.ssh/configに追加してパスワードを入力する必要がないようにすることもできます。


特定の条件が満たされると、ローカルのMacBookをvpsのポートに直接接続することもでき、15000ローカル転送やプロキシジャンプは不要です。つまり、条件は次のようになります。

  1. VPN のポートは15000ファイアウォールによってフィルタリングされません。

  2. vps(通常)GatewayPorts yesに設定した設定です。この設定は、デフォルトでリモート転送がリッスンポートをループバックポート以外のアドレスにバインドできるかどうかを決定します(したがって、IPアドレスはORではありません)。詳細については、マニュアルページを参照してください。sshd/etc/ssh/sshd_config
    no127.0.0.1::1sshd_config(5)

この場合、次の2つのコマンドのみが必要です。

  1. Linuxシステムからvpsへのリバース転送(*:前のリモートポートに注意してください。これは「すべてのアドレスでリッスン」を意味します):

    ssh -R *:15000:localhost:22 vps-user@vps
    
  2. MacBookからvpsへの簡単な接続:

    ssh -p 15000 -l linuxbox-user vps
    

これは次の.ssh/configファイルに変換されます。

  • Linuxマシンで(*:以前のリモートポートをもう一度参照してください):

    Host vps
        RemoteForward *:15000 localhost:22
        User          vps-user
    
  • ローカルMacBookの場合:

    Host linuxbox
        Hostname  vps
        Port      15000
        User      linuxbox-user
    

しかし、この方法は参考にしてくださいあなたはあなたのLinuxボックスをインターネットに公開します、これはあなたが望んでいない可能性があります。

答え2

MacBookで行うことができればこれを行う必要はないので、LinuxボックスはVPSへの逆方向トンネルを自動的に実行すると仮定します。

したがって、MacBookでやるべきことは次のとおりです。

  • Bashスクリプトを作成します。

    #!/bin/bash
    ssh -f -N -L 12345:localhost:1500 vps-user@vps
    sleep 5
    ssh -f -N linuxbox-user@localhost -p 12345
    
  • 実行可能であることを確認してください。chmod +x /path/to/script

  • 次に、最後にエイリアスを作成します。/home/username/.bashrc

    alias sshlinuxbox="/path/to/script"
    
  • sshlinuxbox次に、新しい端末を開いた後、.bashrcで更新を入力するだけです。

答え3

次の行は正確ですが、混乱しています。

  1. MacBookからvpsへの簡単な接続:

ssh -p 15000 -l linuxbox-uservps

「-l」は、SSH で一般的に使用されていないログイン名です。

より簡単なコマンドは次のとおりです。

ssh -p 15000 linuxbox-user@vps

説明:「linuxbox」がリバースSSH接続(Rタイプ)で接続されている場合、その接続はvpsサーバーのポート15000に転送されます。ラップトップはvpsサーバーの「linuxbox」にアクセスし、ラップトップはvpsサーバーのlinuxboxユーザーを処理する必要があります。したがって、linuxbox-user@vps です。

さらに、接続を確立し、リモートlinuxboxにパスワードが必要な場合は、次のプロンプトが表示されます。linxubox-user@vpsのパスワード:この時点で実際にlinuxbox-usersパスワードを入力する必要があります。

関連情報