使 OpenSSH sftp 提示输入用户名而不是使用本地用户名

使 OpenSSH sftp 提示输入用户名而不是使用本地用户名

我已经创建了一个需要修改的工作脚本。该脚本非常简单。

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-nicknamesftp [email protected]ssh_config 手册以获取完整列表。

顺便说一句,基于密钥的身份验证非常适合自动化,所以我强烈建议您不要编写脚本来询问任何东西(包括密码),而是生成一个密钥对并使该密钥在服务器上受到限制,因此只允许 sftp 使用它;然后,在脚本中使用基于密钥的身份验证。

相关内容