由于某种原因,我必须使用“setsid”来运行我的所有命令。
但是,当运行“setsid scp ~/aaa user1@10.170.3.17:/tmp/”时,出现了一个要求输入密码的对话框。通常,提示出现在命令行中。
它是由 ssh 中的某些配置引起的吗?我想消除盒子。如何实现?
该setsid
命令的效果之一是通过 setsid(1) 启动的进程与其控制终端分离。在没有控制终端的情况下,scp
不能仅仅因为它没有“看到”任何东西而在启动它的终端上询问密码。但是,它“看到”的是环境变量,它告诉它有一个 X11 窗口会话,它可以在其中显示一个图形实用程序来询问您解锁私有 SSH 密钥所需的密码或密码短语,该密钥将用于验证远程系统。
即使您取消设置它“看到”的环境变量并使用它来将对话路由到x11-ssh-askpass
您的屏幕(DISPLAY
我在这里推荐的解决方案之一是设置“无密码”登录(如果适用于给定的安全环境),使用 ssh-keygen(1) 生成不受密码保护的“身份密钥”。
您可能会探索其他可能性,例如在文件中或命令行选项中提供密码,任何对您更有效的方法。请查看 ssh(1) 联机帮助页的 ENVIRONMENT 部分。