获取shell脚本以输入密码

时间:2011-04-15 09:33:04

标签: linux shell sftp

我是shellcripting的新手(并且在Linux世界中没有很好的旅行)并且正在尝试使用我的给定的shell脚本自动登录到sftp服务器。现在这是我已经走了多远

#!/bin/bash
HOST='somehost.com'
USER='someusername'
PASSWD='somepass'

sftp $USER@$HOST

现在这是我遇到麻烦的地方。此时我将被提示输入密码。那么如何让脚本在提示时自动回复密码?我也尝试过使用sftp命令传递密码的方法,但没有运气。任何人都可以帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:3)

使用此代码:

#!/bin/bash
HOST='somehost.com'
USER='someusername'
PASSWD='somepass'

echo $PASSWD | sftp $USER@$HOST

答案 1 :(得分:2)

在命令行或此类脚本中包含密码不是一个好主意。任何有权访问正在运行的进程列表的人都可以看到您的密码,最终可能会出现在您的shell历史记录和日志文件中。所以这会造成安全漏洞。

this thread中有更多信息,建议使用基于密钥的身份验证。

答案 2 :(得分:2)

不要将密码存储在脚本文件中,除非您强烈要求保持权限绝对紧密。

对于所有ssh / sftp / scp,使用公钥认证。了解您可以在客户端和服务器端设置的设置,以使其更安全(IP限制,用户限制,密码限制,重试次数,同时登录次数等)仅此一项应消除大量不安全因素脚本问题。

如果您绝对必须在变量中存储密码,请不要将其导出,并在完成使用后取消设置。

答案 3 :(得分:1)

  1. 在本地主机上(将执行脚本)生成ssh密钥对:

    scriptuser @ scripthost:/〜$ ssh-keygen -t rsa 生成公钥/私钥rsa密钥对。 输入要保存密钥的文件(/home/michal/.ssh/id_rsa):{按ENTER!} (...)

  2. 将生成的公钥从scripthost复制到somehost.com并将其附加到经过身份验证的主机列表中:

    scriptuser @ scripthost:/〜$ cat~ / .ssh / id_rsa.pub | ssh someuser@somehost.com'cat>>的.ssh / authorized_keys的

  3. 现在你应该能够使用没有密码的scp或sftp:

    scriptuser @ scripthost:/〜$ scp / any / local / file someuser@somehost.com:/ remote / location /

答案 4 :(得分:0)

使用sshpass命令。 你可以输入密码和命令