ssh 無密碼登入大部分運作正常,除了第二個盒子的服務帳戶

ssh 無密碼登入大部分運作正常,除了第二個盒子的服務帳戶

幾個月前,我設定了一個小型 Linux 機器,並為我的個人使用者 ID 和服務帳戶 ID 設定了無密碼 ssh 登入。這對雙方來說都很好。我將服務帳戶的私鑰/公鑰檔案儲存在客戶端盒子上與我儲存個人使用者 ID 的金鑰相同的位置。

我使用以下內容作為我的基本指南:http://www.howtoing.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/

今天我設定了第二個盒子,打算以同樣的方式配置它。我毫不費力地讓它為我的個人用戶名工作。但是,它仍然不適用於服務帳戶,但我不明白為什麼。當我嘗試使用服務帳戶 ssh 連接到第二個框時,它會提示我輸入密碼,然後讓我進入。

我已驗證服務帳戶的公鑰已插入兩個盒子上的 ~/.ssh/authorized_keys 檔案中,並且兩個盒子上的金鑰值相同。

我已經驗證 ~/.ssh 的權限為 700,而 ~/.ssh/authorized_keys 的權限為 600(我還使用 640 進行了測試,這是我讀到的建議值)。我已經在服務帳戶的主目錄中的兩個盒子上驗證了這一點。

請注意,兩個框中服務帳戶的數位使用者 ID 不同。我認為這不會有任何區別。

我還注意到,在使用服務帳戶 ssh 到任一盒子後,如果我嘗試使用服務帳戶從該盒子 ssh 到另一個盒子,它會提示我輸入密碼。

我需要對“known_hosts”執行某些操作,還是其他操作?

更新

按照建議,我嘗試使用“-v”運行 ssh 並檢查 ssh 嘗試的輸出。

這是輸出,有一些省略:

%  ssh -v [email protected]
OpenSSH_7.2p2, OpenSSL 1.0.2h  3 May 2016
debug1: Reading configuration data /home/myuserid/.ssh/config
debug1: /home/myuserid/.ssh/config line 2: Applying options for *
debug1: Connecting to targethost.com [...] port 22.
debug1: Connection established.
debug1: identity file /home/myuserid/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug1: Authenticating to targethost.com:22 as 'serviceaccountid'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:...
debug1: Host 'targethost.com' is known and matches the ECDSA host key.
debug1: Found key in /home/myuserid/.ssh/known_hosts:18
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/myuserid/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/myuserid/.ssh/id_dsa
debug1: Trying private key: /home/myuserid/.ssh/id_ecdsa
debug1: Trying private key: /home/myuserid/.ssh/id_ed25519
debug1: Next authentication method: password
[email protected]'s password:

我覺得奇怪的是,在最後幾行中,在“下一個身份驗證方法:publickey”之後,檔案路徑引用是“/home/myuserid”,而不是“/home/serviceaccountid”。這似乎是一個很大的線索。

答案1

我無法使用我的帳戶添加評論,但這只是我試圖了解更多資訊以幫助解決問題。

聽起來您有三台計算機,一臺本地計算機和兩台遠端計算機。他們每個人都有兩個您正在使用的帳戶?

如果您在本機上有個人和服務帳戶,並ssh service@remote-2從本機上的個人帳戶執行,那麼它只會找到您的本機個人帳戶的 ssh 金鑰,而不是服務帳戶。鑰新增到遠端服務帳戶的授權金鑰檔案中。

我覺得奇怪的是,在最後幾行中,在“下一個身份驗證方法:publickey”之後,檔案路徑引用是“/home/myuserid”,而不是“/home/serviceaccountid”。這似乎是一個很大的線索。

這就是 ssh 在本機帳戶中尋找金鑰。如果您希望該路徑是服務帳戶的主目錄,那麼您需要登入服務帳戶並然後運行 ssh。

相關內容