web-dev-qa-db-ja.com

ホスト間SSHトンネル

2つのUbuntu 12.04サーバー間に完全なSSHトンネルを作成したい(SSHuttleについて知りましたが、ファイル記述子の処理にバグがあるため、高負荷でクラッシュします)IPSECと非常によく似ていますが、必要なのは2つだけです本格的なIPSEC構成を作成する複雑さをホストし、やり過ぎです。

私が達成したいのは、server1とserver2の間のすべてのデータが暗号化され、何千ものSSH動的ポートを作成する必要がないことです。

2
Ba7a7chy

この回答は brandonchecketts に属しています。

Host-AおよびHost-Bという名前の2つのホストがあるとします。次に、これらの2つの間にSSHトンネルを作成し、トンネルが常に稼働していることを確認します。

Host-Aに対して構成を行う必要があります。

端末を開き、ルートに切り替えて、コードを1つずつ貼り付けます

useradd -d /home/tunnel tunnel
passwd tunnel 
su - tunnel    

次のステップはSSHキーの作成です

ターミナルに貼り付け

ssh-keygen

そして、すべてのプロンプトに対してデフォルトの選択肢を選択し、キーをコピーします

cat /.ssh/id_rsa.pub

今度は、Host-Bの構成を行う必要があります。

ターミナルを開いてこれらのコマンドを実行します

useradd -d /home/tunnel tunnel
passwd tunnel 
su - tunnel

そしてターミナルタイプで

mkdir .ssh
vi .ssh/authorized_keys

ターミナルでファイルを開き、上記のHost-Aからコピーしたキーを貼り付けます。

端末タイプで

vi /home/tunnel/check_ssh_tunnel.sh

そして貼り付け

createTunnel() {
    /usr/bin/ssh -f -N -L13306:hostb:3306 -L19922:hostb:22 tunnel@hostb
    if [[ $? -eq 0 ]]; then
        echo Tunnel to hostb created successfully
    else
        echo An error occurred creating a tunnel to hostb RC was $?
    fi
}
## Run the 'ls' command remotely.  If it returns non-zero, then create a new connection
/usr/bin/ssh -p 19922 tunnel@localhost ls
if [[ $? -ne 0 ]]; then
    echo Creating new tunnel connection
    createTunnel
fi

保存して閉じ、それを実行可能にします

chmod 700 /home/tunnel/check_ssh_tunnel.sh

スクリプトを実行すると、リモートPCでトンネルが開始されます。

上記のリンクを読んでください。

2
rɑːdʒɑ