说明:相信很多人的服务器都有被恶意扫描的情况,有的甚至还被暴力破解过。服务器安全维护除了最基本的修改常用端口外,传统的密码登录方式已不再被推荐,因为这已经成为一种安全隐患。SSH 远程连接推荐安全可靠的密钥登录方式如今已经成为主流,它可以很好的解决服务器暴力破解或是忘记密码等问题。

SSH-KEY.png

一、生成密钥对

可在服务端或者本地通过以下命令生成密钥对 (Windows 或 Linux 均支持):

ssh-keygen

执行上面命令后,之后一路回车,默认不设密码,密钥存放目录默认为 ~/.ssh (此为隐藏目录)该目录下同时包含了下面四个文件:

文件名称说明
authorized_keysLinux 公钥验证检测文件,存放远程免密登录的公钥
id_rsa生成的私钥文件
id_rsa.pub生成的公钥文件
known_hosts已知的主机公钥清单
注意:若为 Windows 系统,默认私钥存放在C:\Users\your name\.ssh\ 目录下。

二、安装公钥至服务端/远端

服务端或本地生成的密钥对,对于不同情况安装公钥的方法有所不同,请根据具体情况进行操作。

1、若密钥对由服务端/远端生成

如果生成密钥的操作是在服务端/远端进行的,为防止与服务器彻底失联,请提前保存私钥 id_rsa 文件到本地,然后输入在服务端输入以下命令安装公钥:

# 进入密钥存放目录,默认~/.ssh目录下
cd ~/.ssh

# 将生成的公钥追加到主机 authorized_keys 文件中
cat id_rsa.pub >> authorized_keys
注意:一个公钥只允许一个用户登录和使用

2、若密钥对由本地生成

如果生成密钥的操作是在本地终端上进行的,那么输入以下命令将公钥上传到 VPS:

ssh-copy-id username@remote-ip -p port
username 为用户名,remote-ip 为远程IP地址,port为端口号。

在没有 ssh-copy-id 的情况下(比如在 Win­dows 上), 也可以用命令来操作:

ssh username@remote-ip -p port 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
命令的含义是,在远端新建 .ssh 文件夹,并把本地的 ~/.ssh/id_rsa.pub(公钥)追加到远端的 .ssh/authorized_keys 中。

当然,你也可以手动进行操作,先复制公钥,再登录 VPS ,粘贴到 .ssh/authorized_keys 中。

三、服务端配置文件目录权限

# 给文件赋权
sudo chmod 600 authorized_keys

# 给目录赋权
sudo chmod 700 ~/.ssh

四、服务端开启密钥登陆功能

1、登录服务器修改 SSH 配置文件

sudo vim /etc/ssh/sshd_config

2、查看确认下面两项配置

RSAAuthentication yes
PubkeyAuthentication yes

当你已完成上面全部设置,并确认已成功通过密钥方式登录后,根据需要决定是否禁用密码登录(可选),sshd_config文件修改配置项,如下:

PasswordAuthentication no

3、重启 SSH

sudo service sshd restart

五、本地免密登录远程服务器

如果客户端为 windows,私钥文件id_rsa应存在于 C:\Users\your name\.ssh\ 目录下,或是在登陆时指定私钥地址:

ssh -i /path/to/id_rsa username@remote-ip
username 为用户名,remote-ip 为IP地址,/path/to/id_rsa 密钥的完整路径

如果是使用 VS Code 远程连接则需要在配置中需要指定私钥地址:

Host MyServer
  HostName *.*.*.* // 服务器ip地址
  User root // 用户名
  Port xxxx //端口号
  IdentityFile "D:\小姐姐的家\ssh-key\id_rsa" //id_rsa 的文件路径

相关推荐

文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/4636.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。