微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bash脚本中将密码传递给ssh/scp命令方法详解

安装SSHPASS

对于大多数最新的操作系统,sshpass软件包在认软件包存储库中可用。可以使用以下命令在系统上安装它。

在Debian上:

$ sudo apt install sshpass

在CentOS上:

$ yum --enablerepo = epel -y install sshpass

使用SSHPASS

sshspass使用sshspass环境变量存储用户密码。需要首先使用sshspass变量和密码,然后使用此命令。下面是一个使用sshspass的简单shell脚本。

export SSHPASS=ry3AvbWO0oupYX9HCMzp0Axx

sshpass -e scp testfile.csv user@example.com:/uploads/

还可以使用sshpass运行ssh命令,如下所示

sshpass -e ssh user@example.com

shell脚本中解决SCP命令需要输入密码的问题

使用密钥文件

这里假设主机A(192.168.100.3)用来获到主机B(192.168.100.4)的文件

在主机A上执行如下命令来生成配对密钥:

ssh-keygen -t rsa

遇到提示回车认即可,公钥被存到用户目录下.ssh目录,比如root存放在:

/root/.ssh/id_rsa.pub

将 .ssh 目录中的 id_rsa.pub 文件复制到 主机B 的 ~/.ssh/ 目录中,并改名为 authorized_keys,

到主机A中执行命令和主机B建立信任,例(假设主机B的IP为:192.168.100.4):

scp ~/.ssh/id_rsa.pub 192.168.100.4:/root/.ssh/authorized_keys

下面就可以用scp、ssh命令不需要密码来获取主机B的文件了ssh 192.168.100.4 回车就不需要密码了。

注:其实id_rsa.pub内容添加到对方机器的authorized_keys中就行了

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐