关于linux免密登录的配置及ssh客户端基于私钥文件的登录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于linux免密登录的配置及ssh客户端基于私钥文件的登录相关的知识,希望对你有一定的参考价值。

操作系统环境: CentOS Linux release 7.7.1908 (Core)

 

1、首先在linux服务器上,使用ssh-keygen命令生成密钥对文件(一直回车即可,默认使用rsa算法),如下所示

      其中还支持的算法有dsa | ecdsa | ed25519 | rsa | rsa1,使用其他算法只需要使用-t选项指定即可

    (The possible values are "rsa1" for protocol version 1 and "dsa", "ecdsa", "ed25519", or "rsa" for protocol version 2.)

[root@webserver ~]# ssh-keygen              # 也可以使用ssh-keygen -f /root/.ssh/id_rsa -P \'\'  非交互式生成密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1v4uvRWnv6BSInIaRxctOat2woXxHHFyiY0yN2MKH30 root@webserver
The key\'s randomart image is:
+---[RSA 2048]----+
|        .oBo.    |
|     . = #+E     |
|      o % X      |
|       = B       |
|      o S .   . .|
|     o X + .   + |
|      B + +. .o  |
|     .   ...o... |
|          .++. .o|
+----[SHA256]-----+
[root@webserver ~]# 

2、如上命令所示,执行完后,会在~/.ssh目录下生成id_rsa(私钥文件)和id_rsa.pub(公钥文件)

3、然后将公钥文件内容,追加到sshd配置文件中AuthorizedKeysFile指令定义的文件,其默认值为.ssh/authorized_keys文件

[root@webserver ~]# cd 
[root@webserver ~]# cat .ssh/id_rsa.pub >> .ssh/authorized_keys

4、当然至此,服务器公钥文件即使删除了也是可以的,而私钥则是给客户端使用的,交给客户端后,对服务器本身来说也是非必须的

 

然后ssh客户端就可以直接使用私钥文件免密码登录服务器了

客户端取得私钥文件后,可以对其重命名,以达到见名知义的效果,如 webserver_id_rsa.pem

 

对于linux系统的ssh客户端

只需要使用ssh -i 私钥文件  user@host 即可以访问,如下,其中192.168.100.128为上面的webserver:

需要特别注意,私钥文件的权限最好设置为0400,即只允许文件的拥有者有读的权限(当然测试600,700也可以的,不推荐)

如果文件的所属组和其他人有任何权限,使用私钥登录都会登录失败,报错!

[root@client ~]# ssh -i webserver_id_rsa.pem root@192.168.100.128
Last login: Thu Jun  4 22:16:57 2020 from 192.168.100.89
[root@webserver ~]# 

另外有时,也会看到有人不用-i指定密钥也是可以免密登录,这是由于ssh客户端配置文件/etc/ssh/ssh_config,

默认有IdentityFile指令,指定了私钥文件,虽然是注释状态的,却默认包含了这些文件

如# IdentityFile ~/.ssh/identity(还有~/.ssh/id_rsa、~/.ssh/id_dsa、~/.ssh/id_ecdsa、~/.ssh/id_ed25519)

大部分情况是自己生成密钥对,通过ssh-copy-id  -i 公钥文件  user@host 传递到远端服务器的~/.ssh/authorized_keys

而此时ssh去连接远程主机时,刚好私钥文件,就是刚生成的~/.ssh/id_rsa,所以就不用特意指定,当然也可能客户端配置明确指定了私钥文件

 

对于windows系统下的xshell客户端

只需要在登录弹窗的Public Key(U) 处通过浏览选择私钥文件,或者直接导入私钥,以后就可以直接在下拉中可以看到!

特别注意,这里的Public Key(U) 不要根据这个名称,误以为公钥文件,始终记住,客户端登录服务器,是使用私钥即可!

 

putty客户端

对于putty客户端来讲,不能直接使用pem格式的私钥文件(.pem属于OpenSSH格式的密钥)

需要先使用puttygen.exe小程序将pem格式的私钥文件,转换成putty所能识别的.ppk格式(PuTTY Private Key)

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/13047171.html

 

以上是关于关于linux免密登录的配置及ssh客户端基于私钥文件的登录的主要内容,如果未能解决你的问题,请参考以下文章

Linux_185_基于公钥的免密登录原理

Hadoop第一式:配置Linux环境之免密配置及SSH原理

Linux配置免密登录

基于vagrant工具在win7下免密登录linux

Linux下配置免密登录!

linux上ssh免密登录原理及实现