私のシステムの1つには、http(s)以外の発信を禁止するファイアウォールがあります...
一部のユーザーはsshを実行する必要がありますが、実行できません。最初にポート443でsshを実行しようとしましたが、成功しませんでした。
私はそれをグーグルで調べて、いくつかの設定が必要なstunnel
を使用してそれを行うことができることがわかったので、それを行う方法は?
この構成は2つの部分で行われます。最初の部分は、リモートSSHサーバーで行われます。 2番目の部分はローカルマシンで行われます。
サーバー側の指示:
まず、stunnelをインストールします。
Sudo apt-get install stunnel4
SSL証明書を作成します(365日間):
openssl genrsa 1024 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 365 -out stunnel.crt
cat stunnel.crt stunnel.key > stunnel.pem
Sudo mv stunnel.pem /etc/stunnel/
トンネルを443(https)から22(ssh)にトンネルするように構成します。
設定ファイルを作成して、SSH over SSLを使用するニーズに対応します。
gksu gedit /etc/stunnel/stunnel.conf
これらを書く:
pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[ssh] accept = public_ip:443
connect = 127.0.0.1:22
上記の構成は、生成した証明書の場所と、接続を受け入れて転送する場所をstunnelに指示します。この場合、stunnelはポート443(https)でpublic_ipをリッスンし、そこで接続を22(ssh)のローカルホストにリダイレクトします。
Stunnelサービスを開始するには、/ etc/default/stunnel4でアクティブにする必要があります。 ENABLED行を0から1に変更します。
最後に、サービスを開始して、クライアント構成に進むことができます。
Sudo service stunnel4 start
Netstatコマンドを使用して、stunnelがリッスンしていることを確認できます。
netstat -natp | grep :443
クライアント側の指示:
まず、stunnelパッケージをインストールします。
Sudo apt-get install stunnel4
SSL証明書を作成します(365日間):
openssl genrsa 1024 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 365 -out stunnel.crt
cat stunnel.crt stunnel.key > stunnel.pem
Sudo mv stunnel.pem /etc/stunnel/
構成ファイルを作成します。
gksu gedit /etc/stunnel/stunnel.conf
これらを書く:
pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[ssh] accept = 127.0.0.1:2200
connect = remote_ip:443
Stunnelサービスを開始するには、/ etc/default/stunnel4でアクティブにする必要があります。 ENABLED行を0から1に変更します。
サービスを開始します。
Sudo service stunnel4 start
接続する
これで、サーバーとクライアントの両方でstunnelサービスが実行され、安全な接続を確立する準備が整いました。これで、ポート2200でローカルマシンに接続すると、ポート443でリモートIPに接続し、安全なSSL接続を作成し、もう一方のポート22に接続します。暗号化されたSSH接続は、ポート443を使用した暗号化されたSSL接続でラップされます。
ssh localhost -p 2200
stunnel
は永続的な設定には適していますが、よりアドホックなソリューションが必要な場合は、2つのトンネルを連結できます。
たとえば、ホストAにホストBのポート443にアクセスさせたいが、ファイアウォールによってブロックされているため、Aポート22とBポート443の両方にアクセスできるホストCからトンネルを作成しようとしています。
ssh -R 443:B:443 root@A
は、Ubuntuまたはルートアカウントまたはルートsshアクセスを無効にするdistでは機能しません。
ssh -R 443:B:443 other_user@A
は、ユーザー "other_user"がSudoの許可を持っている場合でも、Aでリッスンポートを設定できるのはrootのみであるため機能しません。
ssh -R 1443:B:443 other_user@A
は、Aが127.0.0.1:1443を使用してB:443にアクセスできるようにします。これは素晴らしいことですが、ポートを変更できない場合があります(アプリでポート番号がハードコードされている場合があります)。
その場合、以前のA-> C-> Bトンネルに加えてssh -L 443:127.0.0.1:1443 127.0.0.1
を使用して、A:443からA:1443に別のトンネルを追加できます。