無密碼登陸,其實是指通過證書認證的方式登陸,使用"公私鑰"認證的方式來進行ssh登錄。
- "公私鑰"認證方式原理
1、首先在client上創建一對公私鑰,
公鑰文件:~/.ssh/id_rsa.pub
私鑰文件:~/.ssh/id_rsa
2、然后把公鑰放到server上
~/.ssh/authorized_keys
3、client登錄server過程
client保留私鑰,在使用ssh登錄server時,ssh程序發送私鑰去和server上的公鑰做匹配,若匹配成功則可以登錄。
- centos7配置證書驗證登陸步驟
a、未設置前,需要密碼進行登陸
b、確認系統已安裝OpenSSH的server 和client
rpm -qa|grep openssh
c、注釋掉sshd的配置文件如下三行,並重啟sshd
$ vi /etc/ssh/sshd_confi
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
$ /bin/systemctl restart sshd.service ---重啟sshd
d、生成證書公私鑰
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
e、證書放置
cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
f、修改authorized_keys權限
chmod 600 ~/.ssh/authorized_keys
不安全的設置,將不能使用RSA功能
g、測試登錄
ssh -lstack localhost
- 免認證登陸遠程服務器
方法一:
$cat ~/.ssh/id_rsa.pub | ssh 遠程用戶名@遠程服務器ip `cat - >> ~/.ssh/authorized_keys`
方法二:
在本機上執行:
$ scp ~/.ssh/id_dsa.pub 遠程用戶名@遠程服務器ip:/home/stack/
登陸遠程服務器后執行:
$ cat /home/stack/id_dsa.pub >> ~/.ssh/authorized_keys
修改文件authorized_keys的權限
$ chmod 600 ~/.ssh/authorized_keys
- 排障命令及log
ssh -v -lstack localhost 顯示詳細的登陸信息
tail /var/log/secure -n 20 查看系統的日志文件