关于SSH公钥和私钥的权限设置

  最近为了安全起见,设置了服务器私钥访问。设置步骤很简单,但是设置完成后发现总是访问被拒绝,最后求助于万能的网友,发现原来是文件权限设置问题。

一、生成私钥和公钥

  我是使用Linux的Openssh生成公钥和私钥的,指令如下:

1
ssh-keygen -t rsa

  按照提示在默认目录下生成即可,另外可以设置密钥加密密码用来保护私钥。当然,我怕麻烦所以并没有设置这个٩(ˊᗜˋ*)و。
  上述操作会在~/.ssh目录下生成2个文件:id_rsa.pub和id_rsa。最后还需要生成authorized_keys这个文件:

1
2
cd ~/.ssh
cat id_rsa.pub >> authorized_keys

二、设置文件权限

  这一步比较关键,不设置会被服务器拒绝访问。首先设置~/.ssh目录权限为755,然后设置rsa_id.pub及authorized_keys权限为644,最后设置rsa_id权限为600。

1
2
3
4
5
6
cd ~
chmod 755 ~/.ssh
cd ~/.ssh
chmod 644 id_rsa.pub
chmod 644 authorized_keys
chmod 600 id_rsa

  另外还需要确认ssh的配置文件中是否开启了密钥登陆,确认/etc/ssh/sshd_config文件中两个参数为如下显示(被注释掉了的话取消注释就好了):

1
2
3
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

  最后还需要重启一下ssh服务:

1
systemctl restart ssh.service

三、设置Putty

  将上述生成的id_rsa下载到需要远程登陆的电脑上,打开PuTTY同目录下的PuTTYgen,导入id_rsa文件,然后点击生成私钥完成转换。

  打开PuTTY设置私钥和登录名,保存登陆会话完成设置。然后就能通过私钥访问服务器了。

四、关闭密码登陆(可选)

  为了安全,最好将密码登陆关闭。方法如下,依旧是打开/etc/ssh/sshd_config文件,修改下面这个参数即可:

1
PasswordAuthentication no

  修改完成后重启一下ssh服务。

Enjoy it!

本文标题:关于SSH公钥和私钥的权限设置

文章作者:怪番茄

发布时间:2018年12月17日 - 16:12

最后更新:2019年01月16日 - 08:01

原始链接:https://godenx.xyz/关于SSH公钥和私钥的权限设置/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

您的支持将鼓励我继续创作!