使用密钥对无密码登陆服务器
在做开发的时候,本地登陆服务器是很常见的事情,为了避免密码简单造成服务器风险<中间人攻击>和密码复杂登陆麻烦,设置了通过密钥对进行登陆服务器。
本地生成rsa(执行环境:win10)
ssh-keygen -t rsa
执行完成后在默认目录 C:\Users\用户名.ssh 中会有 id_rsa 与 公钥:id_rsa.pub 两个文件
id_rsa是私钥 这个一般不需要给到其他人 具体可以看下rsa加密原理
id_rsa.pub 这个里面的内容是我们需要添加到到服务器的
将公钥内容添加到服务器(执行环境:ubuntu服务器)
cd ~/.ssh
echo "id_rsa.pub里面的内容" >> authorized_keys # 可以不断追加
cat authorized_keys # 查看是否添加成功
chmod 700 ~/.ssh # 注意权限问题
chmod 600 authorized_keys # 注意权限问题
服务器配置(执行环境:ubuntu服务器)
vi /etc/ssh/sshd_config
#修改以下配置
RSAAuthentication yes # 设置是否使用RSA算法进行安全验证
AuthorizedKeysFile .ssh/authorized_keys # 读取authorized_keys文件地址
PasswordAuthentication no # 禁止密码登陆<添加密钥对后测试连接成功再关闭,不然登不上服务器就有点傻眼了>
PubkeyAuthentication yes # 开启密钥对登陆
service sshd restart #保存设置后重启sshd
本地使用密钥连接(执行环境:win)
ssh -i ~/.ssh/id_rsa root@xxx.xxx.xxx.xxx -p 22
扩展
将公钥添加在不同服务器用户authorized_keys中可赋予该公钥对应连接对应服务器用户的权限.
如:服务器现有root,guest(非root账号)两个账号 A同学是服务器管理人员,B同学是非管理人员 将A同学的公钥添加到root账号目录下的authorized_keys中, B同学添加到guest中。