非root用户免密访问linux服务器

场景:有一台linux服务器A,需要在另一台服务器B上免密连接,通过ssh执行脚本或scp推送文件,但我们并没有A服务器的root账号密码,只有一个普通账号user1的用户名和密码。

看了网上的很多文章和AI,通过ssh-keygen命令生成的秘钥始终无法成功免密连接。经过反复尝试,终于成功了。

 

如果想用B免密连接A,需要在B服务器上生成密钥,并放到A服务器的authorized_key文件中。

具体步骤:

        1、在B服务器上执行:

ssh-keygen -t rsa -b 2048

        之后就是一路回车即可,会在系统的用户文件夹下的.ssh文件夹中,生成出id_rsa 和id_rsa.pub文件。windows服务器即在C:/用户/用户名/.ssh/下,linux服务器一般在/root/.ssh/下,非root用户会在/home/用户名/.ssh下。

        2、将上一步生成的id_rsa.pub文件中的内容复制到A服务器上/home/用户名/.ssh/authorized_key文件中。

        因为我们没有root账号密码,在使用普通账号时,无法进入到/home/用户名/.ssh文件夹,此时需要先使用sudo su root命令获取root权限。重点操作来了:

        ①、首先需要把/home/用户名/.ssh文件夹的所有人改为普通用户

cd /home/user1/
chown user1 .ssh
chmod 700 .ssh

           ②、将B服务器的公钥内容写到.ssh下的authorized_key文件中

# 初次进入,应该没有authorized_key文件,需要手动创建
cd .ssh
vi authorized_keys

:wq #保存退出

            ③、然后需要将 .ssh文件夹下的文件修改所有者及权限

# 将ssh文件夹下的文件拥有者设置为user1,并修改权限为600,一定要是600,权限高了在后面执行连接操作时会报错。

chown user1 ./*
chmod 600 ./*

        此时就应该大功告成了,可以在B服务器上执行 ssh  user1@A服务器ip 进行测试,若直接进入到服务器命令行界面即为成功。我的是windows服务器:

 

总结:之前失败主要是困在了权限问题。权限给低了,user1无法访问,权限给高了又会报错。后来想了下,应该需要指定文件所有者,这样即使分配了700和600的权限,就也可以访问了。果然配置了文件所有者后,问题就解决了。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值