一、前言:
ssh遠程登錄密碼認證的方式有三種,password、Keyboard Interactive、Public Key前面兩種方式就是密碼認證,含義都是一樣大同小異。
第三種是登錄方式最安全的一種。下面我們就來實現第三種方式public key秘鑰認證方式。
二、原理:
ssh客戶端利用服務端發過來的私鑰,進行登錄的認證,認證服務端的公鑰。從來實現安全的訪問。
三、准備:
服務端系統:ubuntu
四、服務端生成秘鑰
ssh-keygen -b 1024 -t dsa
接下來直接Enter
生成的路徑:/root/.ssh/
-rw-r--r--. 1 root root 668 Aug 1 05:27 id_dsa
-rw-r--r--. 1 root root 616 Aug 1 05:05 id_dsa.pub
修改權限:
chmod 700 .ssh/
chmod 600 ~/.ssh/id_dsa
chmod 644 ~/.ssh/id_dsa.pub
生成認證秘鑰:
cd .ssh/
cat id_dsa.pub >> authorized_keys
-rw-r--r--. 1 root root 616 Aug 1 05:27 authorized_keys
-rw-r--r--. 1 root root 668 Aug 1 05:27 id_dsa
-rw-r--r--. 1 root root 616 Aug 1 05:05 id_dsa.pub
五、更改sshd的配置文件
vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes #開啟密鑰認證
AuthorizedKeysFile .ssh/authorized_keys #設置認證密鑰路徑
PasswordAuthentication no #禁用密碼認證
保存退出
六、將私鑰發送給客戶端,重啟sshd服務
systemctl restart sshd #可能不生效
service ssh restart #可用service ssh reload替代
七、使用xshell遠程登錄
ssh 地址--->輸入用戶名--->選擇public key導入證書--->即可登錄
選擇瀏覽文件,選擇私鑰即可
八、使用winscp遠程登錄
新建站點,選擇SFTP,輸入主機名,用戶名,高級選擇SSH驗證,密鑰文件選擇dsa或者rsa私鑰文件,自動轉成puTTY私鑰文件
九、使用xshell生成密鑰
如果有用xshell,可以選擇Public Key登錄-瀏覽-用戶密鑰-生成,保存公鑰,上傳到.ssh目錄,
使用如下命令cat id_dsa.pub >> authorized_keys來設置驗證的公鑰,xshell端使用私鑰來驗證登錄。
私鑰也可以導出給其它人使用。
本文是參考網絡文章,結合本人實踐經驗所得,歡迎大家轉載分享。