如何在WinSCP中运行SUDO命令以将文件从Windows传输到Linux。

85

我正在尝试使用WinSCP从Windows传输文件到Linux实例。

我使用我的实例的私钥以ec2-user用户身份登录Amazon实例。然而,ec2-user没有写入Linux实例的权限。

我该如何通过WinSCP或其他文件传输方式使用sudo su访问根目录并向Linux盒子写入文件?

谢谢。

8个回答

136

我知道这很旧,但实际上非常可能

  • 进入您的WinSCP配置文件(会话>站点>站点管理器)

  • 单击编辑>高级...>环境>SFTP

  • 在“ SFTP服务器”中插入sudo su -c /usr/lib/sftp-server (请注意,在您的系统中此路径可能不同)

  • 保存并连接

来源

AWS Ubuntu 18.04: enter image description here


32
对于 Amazon Linux AMI,其 /usr/libexec/openssh/sftp-server 是 SFTP 服务器。 - Ahsaan Yousuf
17
在Ubuntu 18上对我有用 (sudo su -c /usr/lib/sftp-server)。 - Adam
2
无法初始化SFTP协议。主机是否运行SFTP服务器? 在服务器上,SFTP服务器正在运行。 - Darwin
2
和@Biodiversity一样,我在WinSCP上遇到了“无法初始化SFTP协议。主机是否正在运行SFTP服务器?”的错误。 我已经验证了我的sftp-server路径也是正确的。 - protango
2
对于CentOS,请使用以下命令:sudo /usr/libexec/openssh/sftp-server - Peuczynski
显示剩余5条评论

67

在WinSCP中有一个选项可以完全符合您的要求:

输入图像描述

输入图像描述


错误:"sudo:没有 tty 存在和未指定 askpass 程序"。 - ESP32
5
启动消息跳过错误。你的shell可能与该应用程序不兼容(推荐使用BASH)。 - Darwin
我通过更改根目录而不是用户以及更改根密码来解决了这个问题。 - Darwin
1
我使用了 sudo su - <用户名>,对我来说有效。 - Mayank Kumar Thakur
9
请确认您的“文件协议”是“SCP”,而不是“SFTP”。 - Rami Alloush
1
就像Rami所说的那样。这就是它。 - ChristianNRW

39

据我所知你无法这样做。
在我的工作场所,我是通过WinSCP将文件传输到您的home~)目录(或者任何您具有完全权限的目录,例如chmod 777或其变体),然后从那里通过SSH连接到您的Linux机器,并使用sudo命令将它们复制到目标文件夹中。

另一种解决方案是更改要上传文件的目录的权限,以便您的用户(没有sudo权限)可以写入这些目录。

我还建议您阅读WinSCP远程命令以获取更多详细信息。


13
这并不完全正确,这是可以实现的。参考资料:重复问题:WinSCP连接Amazon AMI EC2实例,在登录后更改用户为“root”、WinSCP常见问题解答:“如何在登录后更改用户(例如su root)?”、WinSCP支持论坛主题:使用WinSCP上传到ec2服务器和文章:作为root用户通过WinSCP连接到亚马逊的Linux - Martin Prikryl
2
不正确。实际上有几种不同的方法可以实现这个。 - Brady
1
错误的答案,请参考上面的顶部答案。不知道为什么会接受错误的答案? - Nhân Trần
1
请编辑这个问题,撰写一个真正的答案。如果你想保留自己回答中有用的数据,也可以保留。但是现在这样不太妥当。 - Leandro Bardelli

5
通常所有用户都会有对 /tmp 的写访问权限。将文件放到 /tmp 中,然后登录 Putty,接下来你就能使用 sudo 命令并复制文件了。

4

我想提醒一下,在EC2实例上安装SUSE Enterprise Server V15.2时,需要添加到winSCP SFTP服务器命令的命令是:

sudo su -c /usr/lib/ssh/sftp-server

由于我的声望不足以在原答案中添加评论,但我必须找出这个命令并加以补充。


2

使用 ssh 登录到 FreePBX 并在终端中运行以下命令:

sudo nano -f /etc/sudoers.d/my_config_file

YourUserName ALL=(ALL) NOPASSWD:ALL

sudo systemctl restart sshd

WinSCP:

under session login ==> Advanced ==> SFTP

将SFTP服务器更改为:

sudo /usr/libexec/openssh/sftp-server

上述行非常宽松,允许用户YourUserName从任何地方(第一个ALL)以root身份运行任何命令(第二个ALL),而无需输入密码。 - undefined

1

我有同样的问题,不确定是否可行。

尝试了上面的解决方案对我没有起作用。

为了解决这个问题,我将文件移动到我的主目录下,使用SSH编辑和替换文件。


是的,但在/tmp目录中可能有很多应用程序会话文件,我建议仅将文件放在HOME目录中,以避免混淆,用户可以跟踪其文件,如果需要,他们可以进行验证。如果您有任何解决方案,请提供。 - Naresh A
如果你有问题,请发一个问题,而不是一个“答案”。 - Martin Prikryl
这有点绕弯子,就像我说的,我正在寻找同样问题的直接解决方案。 - Naresh A

0

标记这个帮助我的答案,可能没有回答实际问题

如果您使用密码而不是私钥,请参考此答案,在Ubuntu 16.04.5和20.04.1上提供已测试的工作解决方案

https://dev59.com/1rvoa4cB1Zd3GeqP5Ya7#65466397


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接