我已经创建了一个需要修改的工作脚本。该脚本非常简单。
cd /d path
echo put *.pdf | sftp user@ip_address.
del *.pdf
我想找到一种方法,不要在脚本中写下用户,这样系统将要求输入用户名和密码,而不仅仅是密码。
如果不可能的话,我可能会想办法在服务器中设置一个默认用户,这样我就不需要在脚本中写用户名,系统就会知道该用户。
有没有办法无需输入用户名就可以连接到主机,以便系统会请求它?
如果我输入,sftp ip_address
我将回到user@ip_address password:
用户所在的位置,即来自客户端机器的本地用户,但它不会接受密码。
谢谢。
答案1
我认为你不能让 OpenSSH 工具不自动获取本地用户名。
但是您可以让批处理文件提示输入用户名并将其传递给sftp
:
set /p "SSH_USERNAME=Username: "
echo put *.pdf | sftp %SSH_USERNAME%@example.com
答案2
你可以选择其他方式。OpenSSH 工具总是从中读取用户控制的配置~/.ssh/config
(其中指~
的是你的配置文件,我相信在 Windows 中,它类似于C:\Users\Username
)。你可以在那里配置用户名和许多其他内容:
Host some-nickname
HostName 192.0.2.5
User my-user
然后,ssh some-nickname
将执行,并将作为 工作;其他 OpenSSH 工具将以类似的方式运行。您可以在此“每个主机”配置中放入以下内容(实际上您可以一次引用一组主机):身份文件(使用哪个私钥进行身份验证)、已知主机文件、密码、密钥交换机制、端口转发、流命令(通过代理运行 SSH 连接)等等;请参阅ssh [email protected]
sftp some-nickname
sftp [email protected]
ssh_config 手册以获取完整列表。
顺便说一句,基于密钥的身份验证非常适合自动化,所以我强烈建议您不要编写脚本来询问任何东西(包括密码),而是生成一个密钥对并使该密钥在服务器上受到限制,因此只允许 sftp 使用它;然后,在脚本中使用基于密钥的身份验证。