登录普通用户,比如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拷贝到你的客户端

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: 非root用户使用密钥对登录Linux。 http://www.chhua.com/web-note5636

随机笔记

更多