linux使用ssh key设置免密码登录
linux使用账号密码连接服务器既不方便,也不安全,一旦密码被泄露,或者部门有人离职,都对服务器的安全产生隐患,最好的方式是通过公钥登录
假设现在有两台电脑,A:客户端 B:服务器,以下操作可让A通过公钥登录B服务器
生成公钥与公钥
# 生成公钥与私钥,一路回车即可
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
查看生成的公钥与私钥
$ ls ~/.ssh
authorized_keys id_rsa id_rsa.pub
服务器写入公钥
假设服务器用户名是:vagrant
, ip地址是:192.168.1.12
登录服务器,将客户端的公钥写入~/.ssh/authorized_keys
公钥连接
为了更方便地连接,在客户端电脑的~/.ssh/config
加入以下配置:
Host *
ServerAliveInterval 30
Host vagrant
HostName 192.168.1.12
IdentityFile ~/.ssh/id_rsa
User vagrant
Port 22
保存后,只需要执行ssh vagrant
即可连接服务器,如果依然提示要输入密码,登录服务器,查看日志文件 cat /var/log/secure
一般是因为服务器的~/.ssh/authorized_keys
权限太大
$ sudo cat /var/log/secure | grep refuse
Jan 23 11:14:29 hk1 sshd[16898]: Authentication refused: bad ownership or modes for file /home/testUser/.ssh/authorized_keys
这种情况,执行chmod 600 ~/.ssh/authorized_keys
,然后重启sshd服务:sudo systemctl restart sshd
客户端就可以连接上服务器了,免去了每次输入密码的繁琐
转载必须注明出处:https://www.zhiqiexing.com/70.html