You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shell脚本中自定义SFTP的密码提示输出内容

修改SFTP密码提示的方法

SFTP本身没有直接修改密码提示的内置参数,因为其密码认证流程依赖SSH客户端,而SSH的默认密码提示是硬编码的。要实现自定义的$user@$host's Password:提示,可以通过Expect脚本拦截原提示并替换,具体步骤如下:

  1. 创建一个Expect脚本文件(比如sftp_custom_prompt),内容如下:
#!/usr/bin/expect -f
set user [lindex $argv 0]
set host [lindex $argv 1]
set custom_prompt "${user}@${host}'s Password:"

# 启动带详细输出的SFTP连接
spawn sftp -v -oport=22 ${user}@${host}

# 拦截默认的"Password:"提示,替换为自定义提示
expect "Password:" {
    send_user "$custom_prompt\n"
    # 读取用户输入的密码
    expect_user -re "(.*)\n"
    # 将密码发送给SFTP进程完成认证
    send -- "$expect_out(1,string)\r"
}

# 保持后续的交互会话
interact
  1. 给脚本添加执行权限:
chmod +x sftp_custom_prompt
  1. 使用脚本连接远程主机,传入用户名和主机名参数:
./sftp_custom_prompt $user $host

执行后,原本的Password:提示会被替换为$user@$host's Password:,输入的密码也会正常传递给SFTP完成认证。

内容的提问来源于stack exchange,提问作者Mohammed Shaheer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:16:02