Linux 下普通用户设置使用密匙登录

Secure Shell协议,简称ssh,是一种安全的远程连接协议,用于客户端和主机之间的安全连接。但天外有天人外有人,最近使用密码登录的云服务器很容易就被暴力破解了,ssh基于密码的身份验证也不安全了。工程师建议改为密钥登录,但现实着实有点困难,因为是多用户共同使用的一个机器,那就把我修改的过程记录下来给其他用户参考修改了。

今天介绍的是非root用户使用密钥对登录Linux。


此处为原文太长不看快速通关版

登录普通用户,比如test
cd ~     #回到用户的家目录
ll -a     #查看是否以前设置过密钥,没有.ssh文件的没有设置过密钥,有可以重设,也可使用已有的
ssh-keygen -t rsa  #生成密钥,一步回车
cd ~/.ssh
touch authorized_keys  #如果.ssh中存在此文件则省略此步骤
cat id_rsa.pub >>authorized_keys #将id_rsa.pub的内容追加到authorized_keys
cd ..
chmod 700 .ssh    
chmod 600 .ssh/authorized_keys 
然后私匙文件~/.ssh/id_rsa下载到本地,登录时设置。
若使用putty客户端,需要使用putty key generator 工具转化一下格式。

以下为详解版

1. 检查现有的SSH密钥对

检查主要是为了不覆盖现有密钥。运行以下ls命令查看,若存在可以使用现有的密钥并跳过第二步,或备份旧密钥并生成新密钥。如果看到No such file or directory或 no matches found意味着没有SSH密钥,则可以继续执行下一个并生成新密钥。

ls -al ~/.ssh/id_*pub  #此处的~号为用户默认登录的路径,在第二步会详细解说

2. 普通用户(test)下创建密钥对

[test@CentOS-007 ~]$ ssh-keygen -t rsa
Enter file in which to save the key (/home/test/.ssh/id_rsa):     #回车
Enter passphrase (empty for no passphrase):     #设置密码
Enter same passphrase again:     #重新输入一遍

可以不使用密码,直接点击enter跳过。

公匙私匙键值对.png

ssh-keygen常见参数:(此处均采用默认)
-t:指定生成密钥的类型,默认使用SSH2d的rsa
-f:指定生成密钥的文件名,默认为id_rsa(私匙id_rsa,公匙id_rsa.pub)
-b:指定密钥长度(bits),RSA最小要求768位,默认是2048位;DSA密钥必须是1024位(FIPS 1862标准规定)

若是普通用户test创建的密钥对,通常默认会保存至用户登录目录/home/test/.ssh/下。
id_rsa #私钥,需下载到本地
id_tsa.pub #公玥


但用户登录目录是可修改的,在生成密钥的时候会提示你生成的.ssh 的路径。可注意观察下。如果没注意也可以使用 cat /etc/passwd 查看用户默认登录路径。

修改用户默认路径的方法:切换到root用户,使用usermod命令,例如usermod -d /tmp test (test为你的用户名),使用该命令时请确保该用户下没有运行的软件或进程。


3. 检查~/.ssh/目录下authorized_keys文件是否存在

存在直接跳到修改权限那步;没有的话,创建一个,然后将id_rsa.pub的内容追加到authorized_keys文件尾。修改.ssh的权限为700, authorized_keys的权限为600或者更严格的400,否则登录的时候会提示server refuse you key。

cd ~/.ssh
touch authorized_keys  ->如果ssh中存在此文件则省略此步骤
cat id_rsa.pub >>authorized_keys ->将id_rsa.pub的内容追加到authorized_keys
cd ..
chmod 700 .ssh    
chmod 600 .ssh/authorized_keys 

另外需使用ll ~/.ssh命令查看一下.ssh目录和authorized_keys文件的文件所有者为test,否则还是登陆不了

4. 检测是否需要修改ssh的配置(可忽略)

此处需要使用root账号。

[root@CentOS-007 ~]$vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication no #不能使用密码登录

这里有一点很重要,在配置密钥登录成功之前,千万不要将PasswordAuthentication 设置no,否则你密钥登录不了,然后又禁止密码登录,就悲剧了。在密钥登录设置成功之后,可以将PasswordAuthentication 设置为no,禁用密码登录了,比较安全。

重启sshd服务
sevice sshd restart

5. 将私匙文件id_rsa拷贝到你的客户端

如果要在Windows上使用putty客户端登录linux服务器,需要使用putty key generator 工具转化一下格式。

putty key generator 工具是内置到putty软件中的,但有些用户使用的是绿色版的putty,缩减了putty key generator功能。需要从putty官网(https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)重新下载完整版的putty,按照顺序安装。 还有一点是如果原有版本的putty比新安装的版本低,会报生成的ppk私匙版本不兼容的问题。

putty安装完成后,开始菜单打开Puttygen,即putty key generator 工具,File-> Load private key,然后点save private key就转换完毕,windows下私匙一般以.ppk后缀结尾,比如另存为id_rsa.ppk。

image.png

image.png

打开putty->Connection->SSH->Auth->Private key file for authentication导入,回到Session点保存->open,若能顺利登录,则设置成功。

image.png

你可能感兴趣的:(Linux 下普通用户设置使用密匙登录)