ssh-keygen 记录

实验环境:腾讯云服务器

目标:A免密码登录B

前提条件:

AB服务器的普通用户都是test

AB服务器都是CentOS Linux release 7.6.1810 (Core)

 

A服务器

刚开始的想法是为密钥创建一个备注或者一个独特的名字方便识别。于是Google了下面这条命令

ssh-keygen -f id_rsa_ansible -C "ansible Private password"

生成的密钥如下,主要是结尾的备注。

cat id_rsa_ansible.pub 
ssh-rsa  中间的不重要。 ansible Private password

看密钥的话是没问题的,接下来就是在B服务器上手动填入公钥。或者直接输入以下命令

ssh-copy-id -i /home/test/.ssh/id_rsa.pub [email protected]

用命令的话会让你输入B服务器的test用户密码。

但是,当把公钥copy过去后,不能直接登录。报错

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

网上说把/etc/ssh/sshd_config这个文件的PubkeyAuthentication参数取消注释,但是这个参数是允许root用户远程登录的,所以不管用。

后来又重新生成了id_rsa.pub 密钥,就是默认的,什么都不加。

[test@myc-test .ssh]$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Dj1RHIlrVme9ZpwF7tqFaoIZN6f2XaDElkh6jeyPmPY test@myc-test
The key's randomart image is:
+---[RSA 2048]----+
|         ooo ... |
|        ..+ o.. .|
|        .o.o ..+ |
|       .+= = o*. |
|      .oS B Bo+ .|
|       o O * = o |
|        + = = . .|
|        .+ * . . |
|       .o.E o .  |
+----[SHA256]-----+

然后再copy到B服务器就好使,可以实现免密码登录。后来就想是不问题出在了生成的公钥格式上。所以就去掉一个-f的参数。

ssh-keygen -C "ansible Private password"

生成的密钥名字还是默认的id_rsa.pub,但是公钥的结尾还是有注释,然后将这个新的公钥copy到B服务器上,发现好使。

然后我又测了单加-f参数生成的密钥,事实证明不行。还是会报Permission denied这个错误。

 

当然,很可能是我学艺不精没有好好的领悟这两个参数的精髓,所以特地发出来一是做个记录,二的话也是希望有明白的大哥们不吝赐教。thx

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章