当前位置: 技术问答>linux和unix
SHELL脚本中su切换用户,执行脚本时如何避免出现密码输入提示??
来源: 互联网 发布时间:2017-03-09
本文导语: 在SHELL脚本中切换到另一个用户,想直接将密码也写在脚本中。因为密码输入不能让执行脚本的人来做。而是我事先弄好的。 有什么tool可以实现这个呢 | 可以使用expect 脚本 搜一下,网上很...
在SHELL脚本中切换到另一个用户,想直接将密码也写在脚本中。因为密码输入不能让执行脚本的人来做。而是我事先弄好的。
有什么tool可以实现这个呢
有什么tool可以实现这个呢
|
可以使用expect 脚本
搜一下,网上很多例子
搜一下,网上很多例子
|
这些通过expect 脚本都可以实现,expect就是模拟手工交互的过程
例如
#!/usr/bin/expect
set password 123
spawn scp ./south_db.sql root@135.252.234.118:~
expect -nocase "password: "
send "$passwordr"
expect eof
例如
#!/usr/bin/expect
set password 123
spawn scp ./south_db.sql root@135.252.234.118:~
expect -nocase "password: "
send "$passwordr"
expect eof
|
你这是用root的scp 直接用密码还不安全 用expect就把root密码暴露在文件里了
采用无密码公钥认证就ok啦!!
在现在的客户端机器里用ssh-kegen -b 2048 生成密钥对 在要求输入密码的时候直接回车 然后会在你的~/.ssh下生成一个公钥和密钥
即id_rsa,id_rsa.pub 然后chmod 600 ~/.ssh/id_rsa 然后用scp ~/.ssh/id_rsa.pub root@135.252.234.118:/root/id_rsa.pub
把公钥id_rsa.pub传到服务器上去
接下来是在服务器端135.252.234.118的root用户的设置
mkidr -p ~/.ssh && chmod 700 ~/.ssh
cat ~/id_dsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
修改/etc/ssh/sshd_config把
PasswordAuthentication yes
改成
PasswordAuthentication no
然后重启sshd
好了这下从客户端的root用scp向服务器传东西就不用密码了
|
熊猫的这个好专业和安全呀!公司服务器服务不能停。回家上虚拟机上试试去
----------------------
我都是用密钥认证的rsync和scp备份的。 只要你操作正确 服务器不会停的 一点事都没有。不过你第一次弄的话 在虚拟机上测试一下是完全之策。
----------------------
我都是用密钥认证的rsync和scp备份的。 只要你操作正确 服务器不会停的 一点事都没有。不过你第一次弄的话 在虚拟机上测试一下是完全之策。
|
不输入密码有2种方式
1:expect脚本
2 公钥
1:expect脚本
2 公钥