一般情况下我们都通过密码来登录远程服务器,但是这种方式实际上并不安全,一旦密码被中间人获取或者被遍历,被泄露,我们的远程服务器就会被攻陷。所以这种时候我们需要通过秘钥对的方式来登录。
秘钥对的登录原理是,我们生成一个秘钥对(包含一只公钥,一只私钥),把公钥放置在服务器的某一用户上,私钥我们留在本机,这样我们就可以用客户端通过私钥来远程连接到这一用户。只要其他人没有私钥,那么我们的服务器就不会被非自己以外的人SSH来登录了。
1 生成秘钥对
在我们的远程服务器上执行
ssh-keygen 生成秘钥对
期间会提醒你生成秘钥对的路径和设置秘钥对的密码,这个密码最好设置下,可以更好的提高我们私钥的安全性。之后,如果我们没有修改路径的话,就会在家目录下发现一个.ssh目录,里面有我们的私钥id_rsa,以及公钥id_rsa.pub
2 在服务器上安装公钥
cat ~/.ssh/id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
3 打开SSH的秘钥登录功能
vim /etc/ssh/sshd_config
添加如下配置:
RSAAuthentication yes
PubkeyAuthentication yes
重启ssh:
service sshd restart
这里要注意,如果当前在服务器登录的并不是root用户并且不是sudoer,那么会提示没有权限,需要进行如下配置:
- 3.1 登录root用户
- 3.2 增加sudoers文件的写权限: chmod u+w /etc/sudoers
- 3.3 编辑该文件,找到root ALL=(ALL) ALL,在下面一行添加newuser ALL=(ALL) ALL(newuser就是你想添加权限的用户)
- 3.4 chmod u-w /etc/sudoers 去掉写权限
4 登录
通过如下命令登录:
ssh -p 端口 -i 私钥位置 用户名@主机ip
这时有可能出现提示Permissions 0644 for xxx are too open
这个时候需要为私钥文件赋予更小的权限,400即可
chmod 400 私钥文件位置