CentOS 无密码 ssh 登陆

本文详细介绍如何在两台设备A(192.168.1.66)和B(192.168.1.77)之间配置免密码SSH登录。步骤包括在B上设置sshd服务支持公钥认证、在A上生成公钥/私钥对、通过SCP将公钥复制到B、将公钥添加到B的authorized_keys文件中并调整权限等。

A(192.168.1.66),B(192.168.1.77),现在从A免密码登陆到B。

1.在B上设置sshd,打开公钥登陆验证

vi /etc/ssh/sshd_config
找到
RSAAuthentication yes     
PubkeyAuthentication yes     
AuthorizedKeysFile  .ssh/authorized_keys
重启sshd服务
service sshd restart

2.在A上生成公钥/私钥对

ssh-keygen -t rsa -P ''
-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。

该命令会在 ~ 下生成 .ssh 目录,目录里面有 id_rsa 和 id_rsa.pub 两个文件

其中 id_rsa 是私钥,id_rsa.pub 是公钥。


3.将A下的 id_rsa.pub 通过 scp 复制到B上

scp ~/.ssh/id_rsa.pub user@192.168.1.77/home/user/id_rsa.pub
因为还没有设置好无密码登陆,所以这里还要输入一次B上 user 的密码登陆


4.在B上将A的公钥添加到 ~/.ssh/authorized_keys 文件里

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

5.注意修改 ~/.ssh/authorized_key 的权限为 600

chmod 600 ~/.ssh/authorized_keys


6.在A上用ssh登陆B

ssh -l user 192.168.1.77
第一次登陆需要输入 yes


注意:

B上 ~/.ssh 目录权限一定要是 700, ~/.ssh/authorize_key 权限一定要是 600

而且所有者和用户组都要是 user

如果登陆不上,要输入密码,除开公钥对不上,一般都是权限和所有者不对



CentOS 7.6系统中,远程SSH登录提示拒绝密码可能由多种原因导致,以下是一些可能的解决办法: ### 检查SSH基本配置 SSH配置文件中可能存在限制登录的设置,需要检查以下几个方面: - **允许root登录**:确保在`/etc/ssh/sshd_config`文件中,`PermitRootLogin`设置为允许root登录的状态,例如`PermitRootLogin yes`。 - **DenyUsers和AllowUsers设置**:检查是否将当前登录用户添加到了`DenyUsers`黑名单中,或者不在`AllowUsers`白名单里。若存在此类情况,需要调整相应设置。 - **输错密码次数限制**:查看是否设置了较低的输错密码次数限制,可通过修改`MaxAuthTries`参数调整允许的最大尝试次数,例如`MaxAuthTries 6`。 ### 检查密钥对登录配置 如果使用密钥对登录,需要确保密钥对配置正确: - **服务器配置**:对于被连接的服务器(如`192.168.75.134`),要保证公钥已正确添加到`~/.ssh/authorized_keys`文件中。可通过以下命令操作: ```bash mkdir -p ~/.ssh/ touch ~/.ssh/authorized_keys cat ~/id_rsa.pub >> ~/.ssh/authorized_keys rm -rf ~/id_rsa.pub ``` - **客户端配置**:客户端的私钥文件权限要设置正确,通常私钥文件权限应为`600`,可使用命令`chmod 600 ~/.ssh/id_rsa`进行设置。 ### 检查SSH端口和防火墙设置 - **端口号**:确认SSH服务使用的端口号是否正确。若修改过SSH端口,需要确保防火墙已放行该端口。可通过以下命令查看当前放行端口: ```bash firewall-cmd --zone=public --list-ports ``` 若端口放行,可使用以下命令放行指定端口(假设端口为`2222`): ```bash firewall-cmd --zone=public --add-port=2222/tcp --permanent firewall-cmd --reload ``` - **SELinux**:SELinux可能会拦截SSH登录请求,需要禁用SELinux。进入SELinux配置文件`/etc/selinux/config`,将`SELINUX=enforcing`修改为`SELINUX=disabled`,保存并退出后重启系统。 ### 重启SSH服务 修改配置文件后,需要重启SSH服务使配置生效: ```bash systemctl restart sshd.service ``` 若重启不成功,可尝试以下两个命令: ```bash systemctl restart sshd /etc/init.d/sshd restart ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值