我知道這裡有很多問題如何連接到 SSH 伺服器而無需每次都輸入密碼,答案始終是「使用公鑰」。好吧,我發現自己處於一種罕見的情況下,這確實不是一個選擇。由於某些莫名其妙的原因,我嘗試連接的伺服器上的 OpenSSH 守護程序配置為
RSAAuthentication no
PubkeyAuthentication no
在/etc/ssh/sshd_config
。我在伺服器上沒有任何管理存取權限,因此無法變更這些或任何其他伺服器配置選項。 (當然,我可以完全控制客戶端設定:Linux 上的 OpenSSH 5.8。)
為了避免每次透過 SSH 連接到該伺服器時都必須輸入密碼,我有哪些選擇,特別是最安全的選擇是什麼?我把自己的電腦保護得相當好,所以我們假設將密碼儲存在客戶端檔案中的安全風險是可以接受的低水準(如果確實有必要的話)。
伺服器可以接受的其他身份驗證方法顯然是 GSS API(我對此一無所知)、鍵盤互動(我對此也一無所知)和密碼。以下是一些相關的配置選項:
#ChallengeResponseAuthentication yes
#KerberosAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
#UsePAM no
這是一個 debug ( -vv
) 跟蹤:
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
答案1
在這種情況下,編寫(或更好地記錄)期望腳本將是您的選擇之一。
每個系統都不同,因此不會有腳本,但使用 autoexpect 可以輕鬆地為此目的錄製腳本。
答案2
從目前收集的資訊來看,該伺服器sftp.pass.psu.edu
支援 Kerberos 5 (GSSAPI) 身份驗證並且位於dce.psu.edu
領域內。
Kerberos 是非常在具有許多伺服器和工作站的網路中很常見;許多大型教育機構都設立了它。其相對於公鑰身份驗證的優勢之一是,它可以kinit
自動向 Kerberos 領域中的所有電腦提供憑證,而無需將公鑰複製到每台電腦。另一個是協定支援——相同的 Kerberos 憑證可以用於 30 多種協定(郵件、檔案系統、資料庫...),而不僅僅是 SSH。
(關於「無知的 Windows 管理員」:該dce.psu.edu
領域實際上似乎是基於 Active Directory 並由 Windows 伺服器託管。)
嘗試執行以下步驟:
登入 Kerberos。 (如果系統尚未包含這些工具,則這些工具可能位於「krb5-user」或類似套件中。
kinit
)klist
基尼特您的使用者名稱@dce.psu.edu
如果沒有顯示錯誤,則表示登入成功。
klist
應顯示一個“krbtgt/dce.psu.edu@...
”項。現在使用選項連接到 SSH 伺服器
-vv
;如果身份驗證成功,那就好。如果沒有,您可能需要編輯您的
/etc/krb5.conf
文件。在該[domain_realm]
部分下,添加以下內容:[domain_realm] .psu.edu = dce.psu.edu
使用預設的 Krb5 設置,#1 中獲得的票證有效期為 10 小時,並且可續訂最多一周。但是,我無法驗證這些設定。
如果您想將密碼保存在文件中,一個簡單的方法
kinit your_principal < password.txt
應該可以工作,儘管它並不完全可靠。有了
ktutil
它就可以製作一個“密鑰表”用於代替密碼。$ ktutil ktutil:加號-密碼-p你的校長-k 1 -e aes256-cts-hmac-sha1-96 密碼為你的校長: ********* ktutil:wkt密鑰表文件 ktutil: CtrlD
並使用以下方式登入:
$ kinit -kt密鑰表文件 你的校長
答案3
我會考慮一個混合解決方案,您只需輸入一次密碼,電腦就會維護一個到遠端 SSH 伺服器的套接字。您可以關注這些步驟ControlMaster
正是出於這個原因進行設置。