Ssh
數十萬使用者的 SSH 訪問
我需要設置一個類似於GitHub的解決方案,使用者可以通過 SSH 連接到他們的 git 儲存庫。
這應該可以擴展到數十萬使用者,所以我的想法是使用分佈式文件系統來儲存數據(這樣每個節點都可以訪問整個數據)和一個複制的數據庫來控制使用者(同樣——每個節點都可以隨時訪問整個使用者列表)。
由於使用者未綁定到特定節點,因此無法使用普通的authorized_keys文件,因此我正在尋找一種從數據庫中讀取列表的方法(https://serverfault.com/a/443230/125948)。
AuthorizedKeysCommand命令的問題在於它只傳遞使用者名(這是我的情況 - 將是所有使用者的git),所以基本上我必須做一個
SELECT pub_key FROM user
並且總是為每個連接返回整個列表。這顯然不是正確的解決方案,所以我一直在尋找另一種身份驗證方式。基本上我的問題是:GitHub到底是怎麼做到的?
好的,找到答案了:https ://github.com/blog/530-how-we-made-github-fast
他們實際上修補了 OpenSSH 以對 MySQL 伺服器執行查找:https ://github.com/norbauer/openssh-for-git
我認為他們有一個 tcp 代理來嗅探名為proxymachine的數據包