
我有一個 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 yes
和AuthorizedKeysFile .ssh/authorized_keys
(加上authorized_keys2
這是遺留物,不再使用)是預設值,所以你實際上不需要取消註釋它們。
答案2
如果您只想允許公鑰/私鑰,則需要在伺服器上明確停用密碼驗證。在您的/etc/ssh/sshd_config
更改或新增設定中:
PasswordAuthentication no
我還喜歡明確停用我不使用的所有其他類型的身份驗證,例如 Kerberos 和 GSSAPI。