Linux机器之间免密登录设置

本文详细介绍如何在两台CentOS 7系统间配置SSH免密登录,包括生成密钥、设置权限等步骤,并提供了两种实用的方法:使用ssh-copy-id命令和手工复制公钥。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
### 配置Linux系统的免密登录 #### 1. 安装SSH服务 如果目标机器尚未安装SSH服务,则需要先通过包管理工具进行安装。对于基于Red Hat的发行版(如CentOS),可以运行以下命令来完成SSH服务的安装[^1]: ```bash yum -y install sshd ``` #### 2. 启动并验证SSH服务状态 确保SSH服务已启动,可通过以下命令启用和检查其状态: ```bash service sshd start systemctl status sshd ``` #### 3. 创建SSH密钥对 在客户端主机上生成RSA类型的密钥对。执行如下命令即可创建默认名称的密钥文件`id_rsa`及其对应的公钥文件`id_rsa.pub`[^3]: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 此操作会提示用户输入保存位置以及可选密码短语;为了实现完全无交互式的自动连接,请直接按回车跳过这些选项。 #### 4. 将公钥复制至远程服务器 有多种方式可以把本地用户的`.ssh/id_rsa.pub`内容传递给远端账户下的相应目录里。一种简便的办法是利用专门为此设计的小程序`ssh-copy-id`[^2]: ```bash ssh-copy-id remote_user@remote_host ``` 这一步骤完成后应该能够无需再次提供口令而成功建立安全shell会话了。 另外还有一种手动方法涉及编辑文本并将数据追加到特定文档中去: ```bash cat ~/.ssh/id_rsa.pub | ssh remote_user@remote_host 'mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys' ``` #### 5. 调整权限设置 无论采用哪种途径传输钥匙材料过去之后都务必确认那些重要部位的安全属性被妥善设定好了以免遭到拒绝访问之类的问题发生[^4] : ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` 最后别忘了重启一下守护进程让更改生效: ```bash service sshd restart ``` 以上步骤描述了一个完整的流程用于达成两台计算机之间经由SSH协议实施无缝衔接的目的。 ### 注意事项 - 如果仍然遇到身份验证失败的情况,请仔细核查每一步的操作细节尤其是涉及到路径名拼写准确性方面。 - 对于某些特殊环境可能还需要额外调整sshd配置参数比如允许root级别登陆或是禁用传统密码认证机制等等具体视实际需求而定。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值