macOS使用SSH Key登录Linux服务器

一般情况,我们都用用户名和密码登录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。

macos_sshkey_linux.png