ubuntu实现无密码登陆

本文详细介绍了如何在Ubuntu系统中通过SSH服务实现主机间的无密码登录,包括密钥对生成、配置授权文件、公钥复制与权限调整等关键步骤,最终实现从一台主机到另一台主机的无缝连接。

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

 

环境说明:

打在ubuntu系统的两台计算机masterslave1

两台计算机均已安装ssh服务

两台机器上都存在用户xuyizhen 

 

下面开始配置:

master节点上执行以下命令:

 

 这条命是生成密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsaid_rsa.pub,默认存储在"/home/xuyizhen/.ssh"目录下。

  接着在master节点上做如下命令,把id_rsa.pub追加到授权的key里面去。



  

修改文件"authorized_keys" 权限:



  

root用户登录服务器修改文件"/etc/ssh/sshd_config"的下列内容

 

将下列内容所在行的前面的#去掉

RSAAuthentication yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径

 
设置完之后记得重启SSH服务,才能使刚才设置有效。

/etc/init.d文件夹下放置系统的服务,ssh是一种服务)

 

退出root登录,使用xuyizhen普通用户验证是否成功。



  

从上图中得知无密码登录本级已经设置完毕.

接下来的事儿是把master公钥复制slave1。使用下面的命令格式复制公钥:

192.168.0.22slave1的地址)



  

slave1机器上创建.ssh文件夹,然后修改文件夹".ssh"的用户权限,



  

到目前为止,在slave1机器上,关于master的公钥也有了,文件夹".ssh"也有了,且权限也修改了。

下一步就是把master的公钥追加到slave1的授权文件"authorized_keys"中去。

使用下面命令进行追加并修改"authorized_keys"文件权限:

 

4)root用户修改xuyizhen3computer节点的"/etc/ssh/sshd_config"



  



  

记得重启ssh服务



  

最后记得把"/home/xuyizhen/"目录下的"id_rsa.pub"文件删除掉。



  

到此为止,我们经过前5步已经实现了从masterslave1的无密码登录.(由于我们的配置工作是针对xuyizhen用户的,所以只有xuyizhen用户能实现无密码登陆,如果想实现其他用户如root用户的无密码登陆,只需要在其他用户下操作上述过程即可)

 

以上是配置两台计算机之间的无密码登陆,假设现在要配置3台机器之间的无密码登陆,以ABC为例,那么就得依次生成密钥对,再通知其他机器。

A生成密钥对,A配置完毕后,将公钥给BC,再分别到BC上配置,这实现ABC的无密码登陆。

B生成密钥对,B配置完毕后,将公钥给AC,再分别到AC上配置,这实现BAC的无密码登陆。

C生成密钥对,C配置完毕后,将公钥给AB,再分别到AB上配置,这实现CAB的无密码登陆。

至此,才实现了ABC之间的无密码登陆。

 

好了,至此配置应该没有什么问题了,下面我们来说原理:

A,B为例,以前从A登陆B,总是需要密码验证,很繁琐。那么我可以不可以使用密码登陆一次之后,就让B记住当前登陆的就是A,我们想到密钥对了,在A上生成密钥对,然后将A的公钥传给B,这样以后B就可以通过验证是否与A的公钥匹配来判断当前登陆的的是否是A了。

关于ssh协议,请看http://blog.youkuaiyun.com/macrossdzh/article/details/5691924

 

 

<!--EndFragment-->
### 如何在 Ubuntu 系统中配置无密码登录到 MySQL 为了实现无需输入密码即可登录 MySQL 的功能,可以通过以下方法完成: #### 方法一:通过 `.my.cnf` 文件配置免密登录 可以在用户的家目录下创建或编辑 `~/.my.cnf` 文件来存储用户名和密码信息。具体操作如下: 1. 创建或编辑 `~/.my.cnf` 文件并添加以下内容: ```ini [client] user=mysql_user password=your_mysql_password host=localhost ``` 此处的 `mysql_user` 和 `your_mysql_password` 应替换为实际使用的 MySQL 用户名及其对应的密码[^2]。 2. 设置文件权限以防止敏感数据泄露: ```bash chmod 600 ~/.my.cnf ``` 此后,在执行任何需要身份验证的 MySQL 命令时,可以省略 `-u` 和 `-p` 参数,因为这些参数已经由 `~/.my.cnf` 提供。 --- #### 方法二:使用 Unix Socket 或本地套接字方式 如果仅需在同一台机器上进行无密码登录,则可以直接利用 UNIX socket 登录而不需要提供密码。此方法适用于本地用户访问场景。 1. 编辑 `/etc/mysql/my.cnf` 文件或者相应的配置文件,确保启用了插件认证机制: ```ini [mysqld] plugin-load-add = auth_socket.so default_authentication_plugin = mysql_native_password ``` 2. 使用 SQL 更改目标用户的默认认证方式为 `auth_socket` 插件: ```sql ALTER USER 'mysql_user'@'localhost' IDENTIFIED VIA unix_socket; FLUSH PRIVILEGES; ``` 上述命令会将指定用户绑定至操作系统账户,从而允许其直接通过系统账号登录而不必再单独输入密码[^3]。 注意这种方法只适合于本机上的特定用户组成员尝试连接的情况;对于远程客户端请求仍然要求正常的身份校验流程。 --- #### 方法三:基于主机的信任关系建立无密码链接(不推荐用于生产环境) 另一种不太安全但是简单的方式就是修改授权表使得某些IP地址范围内的设备能够自由存取资源而不用每次都询问口令详情。不过出于安全性考虑一般不会采用这种方式除非是在受控网络内部署专用服务端点的情形之下才可酌情运用之。 例如给定任意外部来源都赋予完全控制权的话可能会带来极大风险所以建议限定具体的子网掩码区间作为许可列表的一部分组成部分: ```sql GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRANT OPTION; ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY ''; FLUSH PRIVILEGES; ``` 上述脚本片段授予了全局权限并将关联帐户的密码清空以便简化后续接入过程然而这同样存在隐患因此务必谨慎行事以免造成不必要的损失。 --- ### 注意事项 尽管以上几种途径都可以达成目的即减少人为干预次数提高工作效率的同时也增加了潜在威胁因素故而在实施之前应当充分评估利弊得失合理规划部署策略最终达到既满足业务需求又能保障信息安全的理想状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值