Linux 下实现实例之间免密登录
实验平台:
CentOS Linux release 7.9.2009
一、生成密钥
1.使用 ssh-keygen
命令生成密钥文件
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #密钥文件存放路径,默认是执行命令的用户的家目录
Created directory '/root/.ssh'. #在用户的根目录生成一个 .ssh 的目录
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:BkB4+5l17YJpYw22sJjpGg0GJxi1s8DCt0WNSsLpBM4 root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|=.ooo.o |
|**.ooo . |
|OE*o.o. . |
|.*.++ ..+ . . |
| +. = BSB . |
| . o+ =.B o . |
| ... o . . |
| .. |
| .. |
+----[SHA256]-----+
2.查看 .ssh
目录
$ ls -la
total 16
-rw-rw-r--. 1 root root 395 Nov 30 23:04 authorized_keys
-rw-------. 1 root root 1675 Nov 30 23:04 id_rsa
-rw-r--r--. 1 root root 395 Nov 30 23:04 id_rsa.pub
-rw-r--r--. 1 root root 516 Nov 30 23:33 known_hosts
# authorized_keys 存放其他实例远程免密登录的公钥,默认没有。主要是存放多台实例的公钥
# id_rsa 生成的私钥文件
# id_rsa.pub 生成的公钥文件
# known_hosts 已知的实例,(连接实例的时候需要你选择 yes/no 的时候,选 yes 就会存在这个文件里)
二、配置免密登录
1.需要免密登录那台服务器就将另外台生成的 公钥 文件拷贝至 .ssh
目录下即可
实现步骤:
Server A
本地远程 SSH
实例
Server B
被远程 SSH
实例
1.将 Server A· 的公钥拷贝到需要密钥登录的
Server B,重命名为
authorized_keys`;
2.Server A
向 Server B
发送一个 SSH
连接请求;
3.Server B
得到 Server A
的信息后,会在 authorized_key
中查找,如果有相应的 用户名
和 IP
,则随机生成一个字符串,并用 Server A
的公钥加密,发送给 Server A
。
4.Server A
得到 Server B
回发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给 Server B
。Server B
进行和生成的对比,如果一致,则允许免登录。
总之:Server A
想要要免密码登录到Server B
,Server B
首先要拥有 Server A
的公钥,然后 Server B
要做一次加密验证。对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开。
2.copy
公钥
- 通过
ssh-copy-id
$ ssh-copy-id -i ~/.ssh/id_rsa.pub 10.10.12.7
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/jarbo/.ssh/id_rsa.pub"
The authenticity of host '10.10.12.7 (10.10.12.7)' can't be established.
ECDSA key fingerprint is SHA256:fx6FzTUrpVop0TbFhIAj2tvsLMaQd/4ykQ5nHFFxtU4.
ECDSA key fingerprint is MD5:84:5e:2f:b8:01:09:7e:df:76:cc:a8:3c:5c:c3:c0:e0.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
jarbo@10.10.12.7's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '10.10.12.7'"
and check to make sure that only the key(s) you wanted were added.
# ssh-copy-id 命令会把本地当前用户的公钥复制发送到远端实例上,并自动创建 `authorized_keys` 文件和 `.ssh` 目录,并设置合适的权限。`authorized_keys` 文件需要 `600` 权限,`.ssh` 目录需要 `700` 权限。
- 手动复制
1.在远程实例上的家目录里创建 .ssh
目录,默认没有
$ mkdir ~/.ssh/
#远程实例
2.本地实例 scp
或其他方式 copy
公钥至远程实例
$ cd ~/.ssh/
$ cat id_rsa.pub >> authorized_keys
$ scp ~/.ssh/authorized_keys user@romte ip
#本地实例,不加 user 默认使用本地执行 scp 命令的用户
3.授权否则会报错
$ chmod 700 ~/.ssh/
$ chmod 600 ~/.ssh/authorized_keys
# .ssh 目录的权限必须是 700
# authorized_keys 文件权限必须是 600
Over~
版权协议须知!
本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
1357 0 2020-12-02
博主卡片
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。
现在时间 2024-12-28
今日天气
随机推荐
站点统计
- 文章总数:241篇
- 分类总数:29个
- 评论总数:12条
- 本站总访问量 353640 次
@xiaozi 最后的分享的镜像下载地址打不开 服务器没有开机吗?
@yuanyuan 为什么我的4b安装centos7.9 插上tf卡 显示不兼...
@Wong arrhenius 牛比
@MakerFace 厉害了!
@TongSir 老哥 更新下我的友链链接 https://blog.ton...