Q:A服務器登錄到B服務器,但為了安全起見,不想輸入B服務器的用戶帳號密碼,該如何實現?
A:可以使用密鑰對驗證,實現在A服務器無需B服務器的用戶帳號密碼即可登錄到B服務器。
登錄驗證對象:服務器中的本地用戶帳號
登錄驗證方式:
密碼驗證:核對用戶名、密碼是否匹配
密鑰對驗證:核對客戶的私鑰、服務端公鑰是否匹配
# vim /etc/ssh/sshd_config
PasswordAuthentication yes // 密碼驗證
PubkeyAuthentication yes //密鑰對驗證
AuthorizedKeysFile .ssh/authorized_keys // 密鑰保存地方
# systemctl restart ssh.service
構建密鑰對驗證的SSH體系:
第一步:創建密鑰對(在客戶端創建,創建后包含私鑰和公鑰,形成一個密鑰對)
私鑰文件:id_rsa
公鑰文件:id_rsa.pub
# ssh-keygen -t rsa
// 設置密鑰保存位置
// 設置密鑰口令
【私鑰權限為:600
公鑰權限為:644
此加密方式為非對稱加密,私鑰文件一定不能公開】
第二步:上傳公鑰文件到服務端
第三步:導入公鑰文件
以下命令把第二步和第三步合成一起實現上傳並導入:
# ssh-copy-id remote_user_name@remote_ip_address
例子:
導入公鑰文件前,使用guest用戶切換到user001用戶:
guest@debian:~$ ssh user001@192.168.9.119
user001@192.168.9.119's password:
開始上傳並導入公鑰文件:
使用guest用戶上傳並導入公鑰文件到user001用戶,上傳並導入成功后,使用guest用戶切換到user001用戶,無需user001的密碼即可登錄到user001(如果guest用戶創建密鑰對時候創建了密碼,則需輸入密鑰口令):
guest@debian:~$ ssh-copy-id user001@192.168.9.119
// 輸入user01的密碼
// 上傳並導入成功,在user001用戶的 ~/.ssh 目錄下有一個文件 authorized_keys ,即上傳並導入后的公鑰文件
// 使用guest用戶切換到user001,無需user001的密碼即可登錄
guest@debian:~$ ssh user001@192.168.9.119
Enter passphrase for key '/home/guest/.ssh/id_rsa':