在 CentOS6 上設定公鑰/私鑰 - 仍然讓我在沒有私鑰的情況下進行連接

在 CentOS6 上設定公鑰/私鑰 - 仍然讓我在沒有私鑰的情況下進行連接

我有一個 CentOS 6 的 VPS。這是我到目前為止所做的......

在我的客戶端電腦 (OSX) 上執行以下命令

ssh-keygen -t rsa

使用預設設定(無密碼、預設名稱等)執行此操作

在我的客戶端上設定以下權限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

使用以下命令將我的公鑰複製到我的 VPS 上的使用者資料夾的根目錄(假名稱/IP)

scp id_rsa.pub [email protected]:/home/fakeuser/id_rsa.pub

在這裡,我注意到我的 .ssh 中沒有authorized_keys 檔案。所以我用觸摸來創建它。然後我使用CAT將.pub的內容複製到authorized_keys檔案中

cat id_rsa.pub >> ~/.ssh/authorized_keys

並在 .ssh 和authorized_keys 上設定適當的權限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

在 /etc/ssh/sshd_config 中,我取消註解了以下內容

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

然後我重新啟動了sshd

service sshd restart

據我所知,這就是啟用公鑰身份驗證所需要做的全部事情。但是,當我嘗試在不提供 -i 私鑰的情況下進行 SSH 時,所有設備都允許我進入。

答案1

如果用戶端金鑰位於預設位置,~/.ssh/id_$alg則會自動使用它,除非您使用-o IdentitiesOnly=yes(或等效的設定檔條目)來停用它。如果您能夠從沒有私鑰副本的用戶端進行連接如果不指定密碼,則表示您的伺服器上的身份驗證設定不正確。如果你想使用僅有的私鑰->公鑰認證,配置PasswordAuthentication no

PS:(anything >>file並且anything >file)如果文件不存在,則建立該文件,您不需要touch它。預設的遠端目錄scp是您的主目錄,因此您通常不需要指定它。

也:

RSAAuthentication適用於SSHv1,它在幾十年前就被破壞了,永遠不應該使用,並且在所有OpenSSH 版本中默認禁用很長一段時間,並且從7.4 開始從伺服器端完全刪除,儘管我預計CentOS 6 可能沒有最新版本。

PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys(加上authorized_keys2這是遺留物,不再使用)是預設值,所以你實際上不需要取消註釋它們。

答案2

如果您只想允許公鑰/私鑰,則需要在伺服器上明確停用密碼驗證。在您的/etc/ssh/sshd_config更改或新增設定中:

PasswordAuthentication no

我還喜歡明確停用我不使用的所有其他類型的身份驗證,例如 Kerberos 和 GSSAPI。

相關內容