具有動態分配的遠端轉送連接埠的 SSH — 如何尋找連接埠號

具有動態分配的遠端轉送連接埠的 SSH — 如何尋找連接埠號

連接到伺服器時,我需要建立一個到特定本地連接埠的任意遠端轉送連接埠。我沒有伺服器的管理員權限,這是很多人使用的重要運算資源。我無法選擇靜態遠端連接埠號,因為我沒有理由期望它始終可用。

我正在使用類似 -- 使用 0 作為連接埠號的命令ssh -R 0:localhost:8001 servername,這樣遠端伺服器就可以為我選擇一個連接埠。這很有效;客戶端告訴我分配的連接埠號,然後我可以使用它手動連接回我的機器(或網路上的另一台機器)。

問題是我需要編寫一些腳本供其他人在遠端系統上使用,並且我需要一種方法來確定遠端該會話的連接埠號碼。我查看了會話中的 SSH_* 環境變量,但沒有一個有幫助。我嘗試過查看 的輸出,ss -le | grep "uid:$UID"它確實找到了連接埠等,但它似乎有點複雜,並且不確定是否始終有效,特別是如果用戶碰巧正在運行其他進程(可能在不同的登入會話中)。

是否有一種明確的、不那麼混亂的方法來查找動態分配的遠端轉送連接埠號碼?

編輯:我剛剛發現這是重複的這篇較早的文章,問題的提出方式略有不同,但實際上是同一件事。不幸的是,我無法使用涉及伺服器上 root 或 sudo 的解決方案。

我發現我想要的東西可能無法以可靠的方式完成——使得這種自動連接埠選擇成為一個不太有用的功能。

相關內容