web-dev-qa-db-ja.com

SSHゲートウェイサーバー

とにかくSSHゲートウェイサーバーをセットアップする方法はありますか?私がセットアップしようとしているのは、ポート番号を使用せずにインターネットからリモートでLAN上の特定のLinuxシェルに接続する方法です。たとえば、ログインすると次のようになります

_ssh server1.domain.com 
_

または

_ssh server2.domain.com 
_

ssh domain.com:(portnumber)の代わりに、サーバーのプライベートIPアドレスのポート22へのポート転送マップ_(portnumber)_

各サーバーはプライベートIPアドレスを持ち、パブリックIPを共有します。

ありがとうございました

6
Lightning77

sshはドメインおよびサブドメインの概念を使用しないため、これは説明した方法では不可能です(HTTPの場合のように、ホスト名はプロトコルの一部ではありません)。ホスト名はIPアドレスを取得するためだけに使用され、使用されています(もちろんポートも使用されています)。あなたの概念は、この質問をするときにおそらく持っていないパブリックIPアドレスのリストがある場合にのみ機能します。

このケースは一般にjumpboxサーバーを使用して解決されます。ここでは、パブリックIPを使用して接続し、そこからローカルネットワーク(ローカルDNS名の可能性があります)が表示されます。これを使用する必要があります、例えば:

ssh -t jumpbox ssh anotherhost.localdomain

ただし、クライアント構成でProxyCommandを使用して簡略化できます。

Host *.localdomain
  ProxyCommand ssh -W %h:%p jumpbox

そして、遠くのノードへの接続は透過的です。入力すると

ssh anotherhost.localdomain

jumpbox経由でターゲットホストに移動します。

6
Jakuje

以下は、SSHゲートウェイサーバーをセットアップするコマンドです。

$ ssh -L 2222:secureserver:22 user@gateway cat -

プロンプトが表示されたらパスワードを入力します(とにかく公開鍵認証を使用する必要があります)。この後、別の端末で、これを使用してセキュアサーバーに接続します。

$ ssh -p 2222 user2@localhost

それでおしまい。これで、ssh、scp、またはその他のコマンドを使用して、ゲートウェイを介してセキュアサーバーと直接通信できます。最初のコマンドを1回だけ実行し、非表示のターミナルで実行し続ける必要があります。

1