Linux机器之间实现免密登录

ssh命令用于远程登录上Linux主机。
常用格式:

ssh [-l login_name] [-p port] [user@]hostname

操作系统

配置两台机器,操作系统都为:Centos7,ip设置为:

Server A: 192.168.9.100
Server B: 192.168.9.110

Linux下生成密钥(ssh-keygen—生成、管理和转换认证密钥)

1.查看ssh-keygen的命令手册,在命令窗口中通过”man ssh-keygen“命令:
这里写图片描述
2.通过命令”ssh-keygen -t rsa“,生成之后会在用户的根目录生成一个 “.ssh”的文件夹
这里写图片描述
3.用户的根目录查看生成的“.ssh”文件夹
这里写图片描述
4.查看“.ssh”文件下生成的
这里写图片描述

* authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥(初始不存在该文件) *
* id_rsa : 生成的私钥文件 *
* id_rsa.pub : 生成的公钥文件*
* know_hosts : 已知的主机公钥清单*

ssh免密登陆设置

1.免密码登录原理
这里写图片描述
图解,server A免登录到server B:

  • 1.在A上生成公钥私钥。
  • 2.将公钥拷贝给server B,要重命名成authorized_keys(从英文名就知道含义了)
  • 3.Server A向Server B发送一个连接请求。
  • 4.Server B得到Server A的信息后,在authorized_key中查找,如果有相应的用户名和IP,则随机生成一个字符串,并用Server A的公钥加密,发送给Server A。
  • 5.Server A得到Server B发来的消息后,使用私钥进行解密,然后将解密后的字符串发送给Server B。Server B进行和生成的对比,如果一致,则允许免登录。
  • 6.得到server B发来的消息后,会使用私钥进行解析,然后将机密后的字符串发给server B。
  • 7.接收到机密后的字符串会跟先前生成的字符串进行对比,如果一致就允许免密登陆。

总之:A要免密码登录到B,B首先要拥有A的公钥,然后B要做一次加密验证。对于非对称加密,公钥加密的密文不能公钥解开,只能私钥解开。

2.常用以下几种方法
方法一:通过ssh-copy-id的方式

  • 命令:ssh-copy-id -i ~/.ssh/id_rsa.pub [romte_ip]
  • 例如:ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.9.110,如下图显示:
    这里写图片描述

ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。

方法二:手工复制粘贴的方式

  • 1.拷贝本地主机的公钥到远程主机: scp id_rsa.pub
  • 2.将本地主机的公钥加到远程主机的授权列表 .ssh/authorized_keys 若不存在,手动创建: cat id_rsa.pub >> authorized_keys
  • 3..ssh目录的权限必须是700 ,chmod 700 .ssh
  • 4.授权列表authorized_keys的权限必须是600,chmod 600 authorized_keys
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux主机之间实现SSH免密登录的过程如下: 1. 在本地主机上生成SSH密钥对(公钥和私钥),如果已经存在密钥对,请跳过此步骤。使用以下命令生成密钥对: ```shell ssh-keygen -t rsa ``` 按照提示,选择密钥存储位置和设置密码(可选)。默认情况下,公钥和私钥将存储在`~/.ssh`目录中。 2. 将本地主机的公钥复制到远程主机上。使用以下命令将公钥复制到远程主机: ```shell ssh-copy-id user@remote_host ``` 将`user`替换为远程主机上的用户名,`remote_host`替换为远程主机的IP地址或域名。执行此命令后,您需要输入远程主机的密码。 如果`ssh-copy-id`命令不可用,您可以手动将公钥内容复制到远程主机的`~/.ssh/authorized_keys`文件中。使用以下命令将公钥内容复制到远程主机: ```shell cat ~/.ssh/id_rsa.pub | ssh user@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" ``` 同样,将`user`替换为远程主机上的用户名,`remote_host`替换为远程主机的IP地址或域名。 3. 验证免密登录是否成功。使用以下命令连接到远程主机: ```shell ssh user@remote_host ``` 这次连接不应再要求输入密码,而是直接登录到远程主机。 完成上述步骤后,您应该能够在本地主机上无需密码连接到远程主机。请注意,这需要在本地和远程主机之间具有网络连通性,并且远程主机必须允许使用SSH密钥进行身份验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值