linux - 如何消除运行 "setsid scp"时出现的对话框?

标签 linux scp dialog

由于某些原因,我必须使用“setsid”来运行我的所有命令。

但是,当运行“setsid scp ~/aaa user1@10.170.3.17:/tmp/”时,出现了一个要求输入密码的对话框。 通常,提示出现在命令行中。

是不是ssh的某些配置引起的? 我想消除盒子。如何实现?

最佳答案

setsid 命令的效果之一是通过 setsid(1) 启动的进程与其控制终端分离。在没有控制终端的情况下,scp 无法在启动它的终端上询问密码,因为它“看不到”任何密码。然而,它“看到”的是环境变量告诉它有一个 X11 窗口 session ,它可以在其中显示一个图形实用程序,要求您输入解锁 SSH 私钥所需的密码或密码短语,该私钥将用于身份验证远程系统。

即使您取消设置它“看到”的环境变量并使用它将 x11-ssh-askpass 对话路由到您的屏幕 (DISPLAY),那可能不会为您产生预期的效果,因为所需的 key 将丢失并且 scp 操作将失败。

我在这里推荐的解决方案之一是设置“无密码”登录(如果适用于给定的安全环境),使用 ssh-keygen(1) 生成不受密码保护的“身份 key ”。

您可以探索其他可能性,例如在文件中或在命令行选项中提供密码,对您来说效果更好。请查看 ssh(1) 联机帮助页的环境部分。

关于linux - 如何消除运行 "setsid scp"时出现的对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10910607/

相关文章:

c# - 尝试在 Linux 上使用 Mono 编译 x64 应用程序会出现 PE32Plus 错误?

python - 如何使用paramiko将文件夹从远程复制到本地?

android - 如何使用两个日期选择器创建自定义对话框?

.net - 为什么ShowDialog总是返回DialogResult.Cancel?

带计时器的 C++ 对话框

c++ - 编写一个可以用作静态但需要锁的 C++ 类

linux - 如何使用ip6tables的功能对ipv6分片数据包进行碎片整理?

linux - 在windows/ubuntu上编写node.js raspberrypi程序

ssh - 如何使用具有不同端口的 scp URI?

linux - 如何将多个 ssh 和 scp 命令脚本化到各种系统