Linux 机器之间免密登录设置

前言

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

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

操作系统

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

  • Server A: 192.168.9.100
  • Server B: 192.168.9.110

Linux 下生成密钥

查看ssh-keygen的命令手册,在命令窗口中通过 man ssh-keygen​ 命令:

通过命令 ssh-keygen -t rsa​ ,生成之后会在用户的根目录生成一个 .ssh​ 的文件夹

用户的根目录查看生成的 .ssh​ 文件夹

查看 .ssh​ 文件下生成的文件

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

ssh免密登陆设置

免密码登录原理


图解,server A免登录到server B:

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

常用以下几种方法

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

通过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 目录的权限必须是 700chmod 700 .ssh
  4. 授权列表 authorized_keys 的权限必须是 600chmod 600 authorized_keys

posted @ 2023-03-14 13:14:00 猎隼丶止戈 阅读(38) 评论(0)
发表评论
昵称
邮箱
网址