ssh 公钥认证是ssh认证的方式之一。通过公钥认证可实现ssh免密码登陆,git的ssh方式也是通过公钥进行认证的。
在用户目录的home目录下,有一个.ssh的目录,和当前用户ssh配置认证相关的文件,几乎都在这个目录下。 ssh-keygen
可用来生成ssh公钥认证所需的公钥和私钥文件。
生成SSH-keygen文件
首先要生成ssh-keygen文件,在系统数据 ssh-keygen 会有如下的提示,然后直接按return或者enter ,就生成了ssh-keygen
[root@txc ~]# ssh-keygen
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:hKIqW20d23rtp4iTXIep9axfTbF+Q62A8I7f/drpTeQ root@txclwtsfwwj
The key's randomart image is:
+---[RSA 2048]----+
| |
| . |
| . . o . |
| . . . o . o.|
| . . Soo . o.o|
| . . . +=o. =.+ |
|o . o.o=o=. . +.E|
|.o . =o.o+o.. ++|
|. ooo+=o. +=+|
+----[SHA256]-----+
ssh-keygen文件存放位置
[root@txc~]# ls /root/.ssh/
authorized_keys id_rsa id_rsa.pub known_hosts
在知道目标机器密码的情况下,需要将公钥(id_rsa.pub)复制到要管理的主机
1、将公钥复制到主机的最简单方法是使用名为的命令 ssh-copy-id 。在本地主机终端执行:
ssh-copy-id remote_username@server_ip_address
例如:
ssh-copy-id root@10.1.1.1
完成免密登陆配置
在不知道密码的情况下(这种场景适用于通过堡垒机来运维时候,你想跳过堡垒机的方案😄,反正这个需求用到不多,但是会有遇到)需要把id_rsa.pub 复制到各个目标服务器中,可以通过下面的操作
[root@txc~]# cd /root/.ssh/
[root@txc.ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7pQ1fiZdjyJP+HXUsxmWCQzjE4gZ0DiHhWoEHavreeO2Mn4BRyGKcG8wJkz1i6PU+hE68uMc72kkaQmckLXOq+UMdLUXZUnUUziXQw6Z873Sjzs5T/tOna3r7dZB31yrD1ijEzLy3GqmrHwtlNQMUlco6QSY65yyj2CK83Z01s2Wx5gp4JCCtS3CggVgsmyKtKErWYMSShXs0GEA3sKNRZauuuYcUvUy5vejBI+mJKtDDoPiRxBueGkIceq2kyM0iGfvvLtoSXOw3rZDWUTpaCtVz6aaVpyHjaq4kLZX5O3zRw4Ks5pCWG9md22yqLWoq50Jp1Oj5t85thZRP+k0OLTQ7o1Y+A4U7qYUHMYyKj5k8R4nxGg94QElA1aIpeA385C3dIsIOGgsl7vVT5x1BO23DY53sGaJgNOl/eS9L/fsb+9Qr9P9vjIdCsQ62ThOT4gS/UIcJbbin9kwBMUeQupo3GIW5frxvOESHaxjHB4CdX7/C8RXhJbE7+AhDiH0= root@txc
拿到这个id_rsa.pub这个公钥信息,并在目标的机器中执行下面的echo语句
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD7jMoTW37o2SKw+k0fKiy0TChgRB8RFcn1ltFinhbmZ+y8i6KbofPjhWyb35eFA/mxWdJBAZ41N5U18kh8BLXCnH29fst7wKNSLhe+3nbnO6+hDUpcUtbDt/O5FHfXvrqnbyfdnDbFgM93qmLfvvPkcCM1Ky72xi22PCqC2wqNi3n9Agy+ae9jYDiVytIOWW+kHu1DBsCAaJcMH1lIE8vjuf944hA3hAj1w6WQlDvnMFdx5rpUw35hS4EJt0F8V+9r0BSaNwa+elhuvd7/Bz8nx2B+B0T+SehHZDOybQBmG/tXaQK5bYaBvoVK04a2pB4U7bmLdSlQgOLNlPlH+hPF root@txc" >> /root/.ssh/authorized_keys
此时已经完成免密登陆的配置