使用單一 SSH 連線像本地一樣存取遠端服務

使用單一 SSH 連線像本地一樣存取遠端服務

是否可以建立一個 SSH 隧道來定址遠端主機,就像它位於本機系統上一樣,例如。輸入以下偽範例本地並達到想要的效果:

  • 複製資料庫:mysqldump remote | mysql localmysqldump 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 連接將成為主連接,下一個將重新使用它。新的從屬連接將非常快速地可用。沒有初始金鑰交換開銷等。

相關內容