web-dev-qa-db-ja.com

Bashスクリプトを介した永続的なSSH接続?

OpenSolarisサーバーが2台あります。リモートサーバーにはMySQLデータベースがあります。 MySQLはスキップネットワークで構成されています。そのため、ホスト名とポートを使用するだけでは、最初のサーバーからそのデータベースにアクセスできません。

ローカルサーバーからMySQLに接続するには、sshトンネルを設定する必要があります。これは、単純な:ssh -L 3350:localhost:3306 user @serverキーとSSHキーで実行できます。それは素晴らしい働きをします。

ただし、接続を永続的にする必要があり、できれば起動時にも実行する必要があります。

接続を作成するための小さなbashスクリプトを作成しました。ただし、単に接続してスクリプトを終了し、ssh接続を失います。リモートサーバーでコマンドを実行するようにスクリプトを変更し、スリープコマンドを実行すると、X秒間接続されたままになります。その後、MySQLに接続できます。ただし、X秒後には必ず接続が失われます。

誰かがこれを行うためのよりエレガントな方法についての提案がありますか? Solarisのsvcadmを使用して接続を作成し、それを常に維持する方法はありますか?

更新:スリープXを追加し、Xが期限切れになる前にMySQL接続を作成すると、ssh接続が無期限にアップしたままになることを発見しました。しかし、それはあまり安定した解決策ではありません。データベース接続が失われると、ssh接続が切断され、再度接続できずにスタックします。

3
Justin Noel

OpenSSHに-Nオプションが必要です。例えば:

ssh -N -L 3350:localhost:3306 user@server &
6
Joe

Ssh-copy-idを試すことができると思います-SSHpub/privキーペアの簡単な伝播を可能にします

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
1
Rajat

Sshトンネルを機能させ続けるautosshのようなツールを見たいと思います。死んだ場合、自動的に再作成されます。

1
David Pashley

または、おそらくrstunnelは、autosshとほぼ同じです-> http://sourceforge.net/projects/rstunnel/

0
wittwerch

Ssh、暗号化、認証などのオーバーヘッドを回避したい場合は、netcat(またはnc)で非常によく似たことができます。ウェブ上にはたくさんのチュートリアルがあります。それらから始めて、より具体的なヘルプが必要な場合は、私に知らせてください。

0
Bruno Bronosky