単一のSSH接続を使用してローカルなどのリモートサービスにアクセスする

単一のSSH接続を使用してローカルなどのリモートサービスにアクセスする

たとえば、リモートホストがローカルシステムにあるかのようにアドレスを指定するSSHトンネルを作成できますか?次の擬似例を入力してください。地元のお好みの効果を得る。

  • データベースのコピー:mysqldump remote | mysql localまたはmysqldump local | mysql remote
  • リモートファイルにテキストを追加する:echo blah >> remote:file.txt
  • リモートファイルの変更:sed ... remote:file.txt
  • リモートコマンドを実行します。apk add blah

単一の接続が不可能な場合、これらのタスクを実行する最も便利な方法は何ですか?

答え1

リモートのmysqlにアクセスするには、転送を通じてlocalhost:12345を使用できます。

ssh -Nf -L 12345:localhost:3306 user@remote

ファイル操作の場合は、sshfsを介してリモートホストをマウントできます。

mkdir /tmp/remote
sshfs user@remote:/ /tmp/remote
echo blah >> /tmp/remote/file.txt
sed ... /tmp/remote/file.txt

リモートコマンドは通常SSHを介して実行されます。

ssh user@remote command ....

単一の接続ですべてを行うことができますこれを ~/.ssh/config に追加すると:

ControlMaster auto
ControlPath ~/.ssh/masters/%l%r@%h:%p

最初のSSH接続はデフォルト接続になり、次の接続はそれを再利用します。新しいスレーブ接続は非常に迅速に提供されます。初期キー交換オーバーヘッドなどはありません。

関連情報