GNU/Linux >> Linux の 問題 >  >> Linux

NAT ルーターの背後にあるオフィス ホストへの SSH アクセス

[email protected]$ autossh -R 12345:localhost:22 [email protected]

後で:

[email protected]$ autossh -L 23456:localhost:12345 [email protected]

[email protected]$ ssh [email protected] -p 23456

できることは次のとおりです。ステップ 1 で、リモート ポートをオフィス PC からサーバー (12345) に転送します。 は例として使用されており、1024 を超える任意のポートで実行する必要があります)。サーバーの 12345 に接続すると、officepc のポート 22 に接続されます。

ステップ 2 で、ポート 23456 をホーム マシンからサーバーの 12345 に転送します (ここから、ステップ 1 で設定したように、officepc:22 に転送されます)。

ステップ 3 では、ローカル ポート 23456 に接続します。オフィス PC のログイン .これはステップ 2 でサーバーのポート 12345 に転送され、ステップ 1 でオフィスの PC に転送されます。

転送にautosshを使用していることに注意してください。これは、トンネルが切断された場合にトンネルを自動的に再接続するsshラッパーであるためです。ただし、接続が切断されない限り、通常の ssh も機能します。

脆弱性が存在する可能性があります:serverpc で localhost:12345 に接続できる人は誰でも officepc:22 に接続して、そこにハッキングしようとする可能性があります。 (SSH サーバーを実行している場合は、デフォルトでオンになっている基本的な保護よりも安全に保護する必要があることに注意してください。少なくとも、ルート ログインを無効にし、パスワード認証を無効にすることをお勧めします。たとえば、こちらを参照してください)

編集 :同じ構成でこれを確認しましたが、動作します。 GatewayPorts no ローカル トンネルではなく、一般に公開されているポートにのみ影響します。転送されるポートは次のとおりです:

homepc:
  outgoing ssh to serverpc:22
  listening localhost:23456 forwarded through ssh tunnel
serverpc:
  listening ssh at *:22
  incoming localhost ssh tunnel (from homepc) forwarded to localhost:12345
  listening localhost ssh tunnel (from officepc) forwarded from localhost:12345
officepc:
  outgoing ssh to serverpc:22
  incoming localhost through ssh tunnel (from serverpc) forwarded to localhost:22

したがって、ネットワーク スタックに関する限り、それはそれぞれのループバック インターフェース上のすべてのローカル トラフィックです (および to への ssh 接続 サーバーPC);したがって、GatewayPorts はまったくチェックされていません。

ただし、ディレクティブ AllowTcpForwarding があります。 :no の場合 、ループバック インターフェースを介しても、転送がまったく許可されないため、このセットアップは失敗します。

注意 :

  • autossh と最近の ssh を使用している場合は、ssh の ServerAliveInterval を使用することをお勧めします。 と ServerAliveCountMax トンネルを維持するためです。 Autossh にはチェック機能が組み込まれていますが、Fedora では問題があるようです。 -M0 それを無効にし、-oServerAliveInterval=20 -oServerAliveCountMax=3 接続が確立されているかどうかを確認します - 20 秒ごとに試行し、3 回連続して失敗した場合は ssh を停止します (そして autossh が新しいものを作成します):

    autossh -M0 -R 12345:localhost:22 -oServerAliveInterval=20 -oServerAliveCountMax=3 [email protected]
    
    autossh -M0 -L 23456:localhost:12345 -oServerAliveInterval=20 -oServerAliveCountMax=3 [email protected]
    
  • 転送が失敗した場合は、-oExitOnForwardFailure=yes を使用して ssh トンネルを再起動すると便利な場合があります。 - ポートが既にバインドされている場合、SSH 接続は機能する可能性がありますが、転送されたトンネルはありません。

  • ~/.ssh/config を使用 オプション (およびポート) を指定することをお勧めします。そうしないと、コマンド ラインが冗長になりすぎます。例:

    Host fwdserverpc
        Hostname serverpc
        User notroot
        ServerAliveInterval 20
        ServerAliveCountMax 3
        ExitOnForwardFailure yes
        LocalForward 23456 localhost:12345
    

次に、サーバー エイリアスのみを使用できます:

    autossh -M0 fwdserverpc

自宅から内部サーバーに、および内部サーバーからオフィスの Linux マシンに ssh できる場合は、自宅から ssh ProxyCommand を使用できます。 nc 経由でサーバーを介して内部マシンにサイレントにバウンスする (netcat)

# ~/.ssh/config on your home machine:
Host internalpc 
   ForwardAgent yes 
   ProxyCommand ssh [email protected] exec nc internal.pc.example.com %p

次に、あなたはただ ssh [email protected] どちらの側でもポートやトンネルを開く必要はありません。


リモートでSSHアクセスしたいパソコンにRobo-TiTOをインストールします。

  • これにより、どこからでも Google トーク クライアント アプリを使用して SSH にアクセスできるようになります。
  • パブリック IP アドレスや特別な設定は必要ありません。
  • これは無料のオープン ソースです。アプリケーション サービスに料金はかかりません。
  • SSH ポートを開く必要はありません (コンピュータを安全に保ちます)。
  • トンネリング (VPN など) を開く必要はありません

サイトが移転したため、以下のインストール手順は廃止されました。新しい URL は https://github.com/formigarafa/robotito です

<ストライク>

Robo-TiTO を Raspberry Pi、Debian、または Ubuntu Box (Debian パッケージ ディストリビューション) に簡単にインストールできるように、スクリプトを作成しました (Raspberry Pi の Raspbian OS でテスト済み)。これが Linux を入手する手順です。ボックスのリモート可能:

<オール>
  • シェル コマンドを開くか、ターミナルと呼び、ホーム フォルダーに移動し、コマンドでインストーラー スクリプトをダウンロードします。

    $ wget https://opengateway.googlecode.com/files/robotito
    
  • その後、コマンドを入力してスクリプトを実行します:

    $ sudo ./robotito
    
  • その後、ファイル credentials.rb を編集できます GTalkアカウントを使用してRobo-TiTOのconfigフォルダーからCtrlを押して保存します +X そしてY .デフォルトでは、nano エディターを使用しています。

  • コマンドで Robo-TiTO フォルダから Robo-TiTO を実行する

    $ cd robotito
    $ ./jabbershd start
    
  • これで、Google トーク クライアントから SSH を使用できるようになります。 Robo-TiTO GTalk アカウントを Google トーク アカウントに追加し、アカウントを使用する前にお互いにチャットしてテストすることを忘れないでください。


  • Linux
    1. SSHトンネリングを使用して制限付きサーバーにアクセスする方法

    2. Ssh – Ssh Configの複数の同様のエントリ?

    3. Ssh – Sshアクセス試行のログ?

    1. Ssh – Sshが許可を求めるのを避ける方法は?

    2. Ssh –とにかくSudoをSshプロキシコマンドに組み込むには?

    3. ポートフォワーディングなしでルーター経由のssh

    1. SSH:ホスト localhost ポート 22 に接続:接続が拒否されました

    2. 中間ホスト経由でファイルを再同期する

    3. ssh トンネリングのみのアクセス