ssh登录dropbear运行的服务器时,密码正确也会出现Permission denied (publickey,password)

本文探讨了Dropbear SSH服务器在执行过程中遇到getpwnam函数调用失败的原因,主要是由于缺少libnss*.so库文件。解决方法是在编译时将这些库文件复制到系统的lib目录下,以确保程序正常运行。

出现这种情况不一定是下面这种解决方法

1. 出现的原因

根本原因是dropbear的代码之中使用到了getpwnam之类的函数调用之后无法获取passwd之中的密码
[参考自](https://blog.youkuaiyun.com/fanrey123/article/details/84517430)

2. 解决的方法

在编译器之中将libnss*.so全部复制到文件系统的lib目录下
### 配置Dropbear SSH服务器实现公钥认证 为了使Dropbear支持基于公钥的身份验证,需执行几个特定的操作来设置环境。这包括生成密钥对以及配置服务器接受这种形式的认证。 #### 客户端操作 在客户端机器上,应先利用`ssh-keygen`工具创建SSH密钥对: ```bash ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa_dropbear ``` 上述命令会生成一对RSA类型的私钥和公钥文件,默认保存于用户的`.ssh`目录下,并命名为`id_rsa_dropbear`(私钥)与`id_rsa_dropbear.pub`(公钥)。这里指定了2048位长度以增强安全性[^1]。 #### 准备公钥上传至服务端 接着把刚刚产生的公钥复制到目标远程主机上的指定位置,通常位于根用户或其他登录账户下的`.ssh/authorized_keys`文件内。可以借助SCP协议完成传输工作: ```bash scp ~/.ssh/id_rsa_dropbear.pub user@remote:/tmp/dropbear_key.pub ``` 此过程模拟了类似于SSL证书请求提交的方式,只是对象变成了用于身份验证的公钥。 #### 修改服务端配置 随后,在服务端编辑Dropbear的相关配置文件——通常是`/etc/default/dropbear`或`/etc/init.d/dropbear`视具体发行版而定,确保启用了公钥认证功能并允许连接来自客户端的尝试: ```bash DROPBEAR_EXTRA_ARGS="-R" echo "command=\"sh /bin/bash\",no-port-forwarding,no-X11-forwarding,no-agent-forwarding $(cat /tmp/dropbear_key.pub)" >> ~root/.ssh/authorized_keys chmod 700 ~root/.ssh; chmod 600 ~root/.ssh/authorized_keys service dropbear restart ``` 以上脚本片段实现了向授权键列表添加新条目,并设置了适当权限以便安全运行。 通过这些步骤之后,当再次尝试从已注册过的客户机发起SSH会话时,则不再需要输入密码即可顺利完成登陆流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值