一般情况,我们都用用户名和密码登录Linux服务器,这样一般也没什么大问题,设置好强密码,一般不会被破解,但少不了一堆的登录失败日志。如果把SSH端口更换下,相对来说就更安全了。目前我的设置是用防火墙过滤22号端口,只允许自己的IP访问。
相比密码登录,使用SSH Key登录更安全,配置好之后,确保私钥的安全下,可以不设置密码,实现免密登录,也更方便。
macOS基于Unix系统,所以比这Windows下设置使用SSH Key登录Linux要方便,下面简单介绍一下思路。
1、创建密钥
ssh-keygen
在创建密钥的时候,可以定义加密类型和长度,具体可以参考ssh-keygen命令帮助。创建的过程中,首先会提示你保存的位置和文件名,再提示你给密钥加个密码,也可以直接回车不要密码。公钥和私钥默认保存这用户目录的/.ssh/文件夹下。默认情况下,id_rsa为私钥,id_rsa.pub为公钥。
2、远程服务器ssh设置
此时还是需要用用户名和密码登录远程Linux服务器。使用vi编辑 /etc/ssh/sshd_config 文件,先打开PubkeyAuthentication和PermitRootLogin,一般只要把这几个参数前面的#(注释符)删掉即可。
PubkeyAuthentication yes
PermitRootLogin yes
重启ssh服务
systemctl restart sshd.service
3、上传公钥到远程服务器
在macOS端操作以下命令,把公钥上传到远程服务器,会提示输入远程的Linux服务器的密码。
scp ~/.ssh/id_rsa.pub <用户名>@<ip地址>:/root/id_rsa.pub
在远程Linux服务器上,操作以下命令,把公钥追加到服务器ssh认证文件中:
cat /root/id_rsa.pub >> ~/.ssh/authorized_keys
如果没有authorized_keys这个文件,请到.ssh文件夹下创建一个,并把权限设置为600。
cat authorized_keys
chmod 600 authorized_keys
追加好后,如果要禁止用户名密码登录,再编辑/etc/ssh/sshd_config文件,把PasswordAuthentication设置为no,重启SSH服务。
PasswordAuthentication no
好了,SSH Key登录已经设置完毕,如果没有设置密钥密码,直接这终端输入ssh root@IP即可登录远程服务器。如果该用户下没有公钥,则会提示Permission denied。