Ssh
為什麼我的 ssh publickey 身份驗證僅適用於並發密碼身份驗證連接
我只是用 openssh-server 設置了一個 vanilla ubuntu lucid (10.04) 系統。我正在嘗試設置公鑰身份驗證,它僅在我首先使用密碼身份驗證連接並保持該會話打開時才有效。所有新的並發會話都將使用 publickey。
我已採取所有步驟來確保在我的伺服器端主目錄上具有正確的權限。
chmod go-w ~/ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
我的客戶端 RSA 2048 位公鑰已附加(僅一行)到 authorized_keys 文件中。我的 RSA 密鑰也有空白密碼。
我對可能導致這種情況的原因感到困惑。我知道這與我的伺服器配置有關。我聽說如果配置不夠安全,它將不允許公鑰身份驗證,但我對那可能是什麼感到困惑。
# Authentication: LoginGraceTime 120 PermitRootLogin no StrictModes yes RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeysFile %h/.ssh/authorized_keys # Don't read the user's ~/.rhosts and ~/.shosts files IgnoreRhosts yes # For this to work you will also need host keys in /etc/ssh_known_hosts RhostsRSAAuthentication no # similar for protocol version 2 HostbasedAuthentication no # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication #IgnoreUserKnownHosts yes # To enable empty passwords, change to yes (NOT RECOMMENDED) PermitEmptyPasswords no # Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication no # Change to no to disable tunnelled clear text passwords #PasswordAuthentication yes
其餘為預設值。PublicKey 有效,但不適用於第一次會話。
提前致謝!
如果您有一個加密的主目錄,Ubuntu 使用 EcryptFS 的方式,那麼這將解釋您所遇到的情況。在您進行首次密碼登錄後,您的 ~/.ssh/authorized_keys firsts 可用。
允許通過 ssh 密鑰直接登錄的一種方法是訪問主目錄之外的特定*AuthorizedKeysFile 。*這可以通過在路徑中使用 %u(使用者)而不是 %h(主目錄)來完成。另一種選擇是將 ~/.ssh/authorized_keys 的副本放在主目錄的“未安裝”版本中。這就是 EcryptFS 掛載下面的內容。
然而,不確定這些解決方案中的任何一個對您有多大好處。您仍然(有點)需要使用您的密碼登錄才能訪問您的正常主目錄。這是您的使用者密碼,用於解開掛載/解密 EcryptFS 主目錄所需的密碼。是的,您仍然可以手動掛載/解密,但這似乎是一個不同的問題。