我在網關上打開了一個 ssh 隧道,如下所示:
autossh -M 30000 -f -N example.com -L \*:20022:192.168.1.40:22
我怎麼能讓一個用戶(比如說約翰)只使用這個 ssh 隧道並限制我擁有的所有其他用戶,這樣除了約翰之外沒有用戶可以使用端口 20022 進行 ssh?請注意,使用者 john 在我的網關上不存在,無論是作為本機使用者還是在 LDAP 中。
答案1
如果客戶端是Linux主機,你可以這樣做iptables:
iptables -A OUTPUT --dest 192.168.1.40 --dport 22 -m owner --uid-owner john -j ACCEPT
iptables -A OUTPUT --dest 192.168.1.40 --dport 22 -j REJECT
--sport 20022
請注意,此條件針對的是目標位址和端口,而不是來源端口--dest
20022 --dport
。但這當然不會阻止其他用戶在不同的連接埠上打開類似的隧道。
答案2
僅將 John 的公鑰發佈到網關上的authorized_keys 檔案。關閉密碼驗證。