Linux 服务器配置密钥实现远程免密登录

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

 

Linux 服务器配置密钥实现远程免密登录

Linux 服务器配置密钥实现远程免密登录

 

一、生成密钥对

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

ssh-keygen

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

文件名称 说明
authorized_keys Linux 公钥验证检测文件,存放远程免密登录的公钥
id_rsa 生成的私钥文件
id_rsa.pub 生成的公钥文件
known_hosts 已知的主机公钥清单

注意:若为 Win­dows 系统,默认私钥存放在C:Usersyour 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

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

如果客户端为 win­dows,私钥文件 id_rsa 应存在于 C:Usersyour 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-keyid_rsa" //id_rsa 的文件路径

© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容