SSH基础:ssh首次连接的公钥认证
非對稱密鑰算法諸如RSA、ECDSA等在證書管理方面有著廣泛的應用,在使用的很頻繁的ssh命令執行時首次就會用到,這篇文章將通過首次登錄信息中密鑰指紋信息的來龍去脈,說明證書公鑰在ssh認證中的作用。
首次連接的信息示例
首次連接某臺機器,可能會如下示例信息:
liumiaocn:~ liumiao$ ssh host121 The authenticity of host '[127.0.0.1]:21122 ([127.0.0.1]:21122)' can't be established. ECDSA key fingerprint is SHA256:y9ir2Jbc7kNZPhP9h/O9juUZbTmGDo6NZi2IZnLwg0s. Are you sure you want to continue connecting (yes/no)?可以看到這是名為host121的機器,實際上是在127.0.0.1的本機上在21122進行的端口連接。上述提示的信息是說這臺目標機器的SHA256密鑰指紋是y9ir2Jbc7kNZPhP9h/O9juUZbTmGDo6NZi2IZnLwg0s,是否需要繼續連接。根據操作系統的不同,有時也會同時顯示SHA256和MD5方式的指紋信息,比如:
[root@host121 ssh]# ssh 192.168.163.121 The authenticity of host '192.168.163.121 (192.168.163.121)' can't be established. ECDSA key fingerprint is SHA256:y9ir2Jbc7kNZPhP9h/O9juUZbTmGDo6NZi2IZnLwg0s. ECDSA key fingerprint is MD5:d5:e7:dc:b3:21:06:5a:e5:c0:f7:a4:60:f7:59:d4:48. Are you sure you want to continue connecting (yes/no)?關于密鑰指紋
密鑰指紋實際上是非對稱加密算法的公鑰的應用,在這里它用來表示登錄對象機器的身份,比如此處算法使用的是ECDSA,顯示的指紋密鑰實際上就是對使用ECDSA算法產生的公鑰文件再次進行SHA256算法進行摘要,從而形成代表服務器身份的數字指紋,在登錄的時候,向用戶提示此指紋信息,表示和此機器建立連接,相當于要求用戶對此證書信息進行確認。
確認流程和方式
在實際的場景中此問題簡單的多,如果碰到了類似的ssh的身份認證連接,擔心是否真正連接到目標機器,一般目標機器的提供者應同時提供此指紋信息。這里以IP為192.168.163.121的虛擬機的ssh首次連接為例,說明上述指紋信息的來源
ECDSA的公鑰信息
前面提到過此提示信息實際上述ECDSA公鑰的摘要內容,首先確認此公鑰文件的內容信息,有如下兩種方式可以進行確認:
- 方法1: 直接確認公鑰文件內容
在機器安裝的時候,缺省會在/etc/ssh目錄下生成基于RSA、ECDSA等算法的公鑰和私鑰文件,直接使用cat命令顯示文件內容即可
- 方法2: 使用ssh-keyscan命令
使用ssh-keyscan命令可以直接在客戶端上獲得相同信息:
生成密鑰指紋
使用如下命令即可根據公鑰文件生成密鑰指紋(摘要信息):
生成SHA256方式密鑰指紋(ECDSA):ssh-keygen -E sha256 -lf /etc/ssh/ssh_host_ecdsa_key.pub
生成MD5方式密鑰指紋(ECDSA):ssh-keygen -E md5 -lf /etc/ssh/ssh_host_ecdsa_key.pub
執行日志示例如下所示:
[root@host121 ssh]# ssh-keygen -E sha256 -lf /etc/ssh/ssh_host_ecdsa_key.pub 256 SHA256:y9ir2Jbc7kNZPhP9h/O9juUZbTmGDo6NZi2IZnLwg0s no comment (ECDSA) [root@host121 ssh]# ssh-keygen -E md5 -lf /etc/ssh/ssh_host_ecdsa_key.pub 256 MD5:d5:e7:dc:b3:21:06:5a:e5:c0:f7:a4:60:f7:59:d4:48 no comment (ECDSA) [root@host121 ssh]#可以看到ssh首次連接時提示的密鑰指紋信息了。
總結
ssh首次連接時寫到know_hosts中的密鑰指紋信息的來源是對目標機器的公鑰進行數字摘要算法而得出的,結合流程可以預防中間人攻擊。
總結
以上是生活随笔為你收集整理的SSH基础:ssh首次连接的公钥认证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 笔试面试题 ~[有答案]
- 下一篇: 评量子论的两本科普书籍