[解決済み] 一時的な SSH トンネルをセットアップするための Bash スクリプト
2022-05-11 16:36:12
質問
Cygwinで、私はBashスクリプトをしたいです。
- リモート サーバーへの SSH トンネルを作成します。
- トンネルを使用するいくつかの作業をローカルで実行します。
- その後、トンネルをシャットダウンします。
シャットダウンの部分に困惑しています。
現在、私はいい加減な解決策を持っています。1 つのシェルで、私はトンネルを作成するために以下を実行します。
# Create the tunnel - this works! It runs forever, until the shell is quit.
ssh -nNT -L 50000:localhost:3306 [email protected]
そして、別のシェルウィンドウで、自分の仕事をする。
# Do some MySQL stuff over local port 50000 (which goes to remote port 3306)
最後に、終わったら、最初のシェルウィンドウを閉じて、トンネルを閉じます。
のように1つのスクリプトですべて行いたいのですが。
# Create tunnel
# Do work
# Kill tunnel
どのトンネルプロセスを殺すべきか知るにはどうしたらよいでしょうか?
どのように解決するのですか?
sshの'コントロールソケット'を使えば、きれいにできます。すでに実行中の SSH プロセスと通信し、その pid を取得したり kill したりするには、次のようにします。 以下のように「コントロールソケット」(-Mはマスター、-Sはソケット)を使用します。
$ ssh -M -S my-ctrl-socket -fnNT -L 50000:localhost:3306 [email protected]
$ ssh -S my-ctrl-socket -O check [email protected]
Master running (pid=3517)
$ ssh -S my-ctrl-socket -O exit [email protected]
Exit request sent.
my-ctrl-socketは実際に作成されるファイルであることに注意してください。
私はこの情報を OpenSSH メーリングリストの非常に RTFM な返答からです。 .
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] ssh "パーミッションが開きすぎています "エラー
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「ambiguous redirect」エラーが発生する
-
[解決済み】Bashのシンタックスエラー:予期しないファイルの終わり
-
[解決済み】 -bash: 予期しないトークン「改行」付近での構文エラー
-
[解決済み] '\r': command not found - .bashrc / .bash_profile [duplicate].
-
[解決済み] バッシュ Vim.NET」が表示されたらVimを終了させる Warning: 出力先が端末でない"
-
[解決済み] (standard_in) 1: bash スクリプトのシンタックスエラー
-
[解決済み] Bashを使ってプログレスインジケータを表示する [重複]。
-
[解決済み] docker alpine /bin/sh script.sh not found
-
[解決済み] "[0: コマンドが見つかりません]" in Bash [重複].
-
[解決済み] IPアドレスのまとめ方