在 WinSCP 中使用 sudo

在 WinSCP 中使用 sudo

我需要httpd.conf/usr/local/apache/conf路径中更新。

我已经在 cpanel 中生成了 SSH 密钥,并在 SSH/Authentication 部分的高级选项中选择了它。

此外,我在本节中尝试了两种不同的 SCP/Shell 选项(默认/bin/bash、、sudo su -

当我提交协议时,我选择 SCP。

我可以登录,但收到权限被拒绝的消息,提示我无法编辑或下载文件。我也尝试过为文件夹设置 777,为文件设置 664,但它也不允许我进行此更改。

我正在使用 Centos 6.5。

会话日志:

2014-01-06 08:23:13.128 Using SCP protocol.
. 2014-01-06 08:23:13.128 Doing startup conversation with host.
. 2014-01-06 08:23:13.182 Skipping host startup message (if any).
! 2014-01-06 08:23:13.182 stdin: is not a tty
! 2014-01-06 08:23:13.182 sudo: sorry, you must have a tty to run sudo
. 2014-01-06 08:23:13.182 Server sent command exit status 1
. 2014-01-06 08:23:13.182 Disconnected: All channels closed
* 2014-01-06 08:23:13.241 (EFatal) **Connection has been unexpectedly closed.** Server sent command exit status 1.
* 2014-01-06 08:23:13.241 Error skipping startup message. Your shell is probably incompatible with the application (BASH is recommended).

答案1

我想分享我的解决方案,因为我也多次寻找解决方法。我现在正在使用 CentOS7,并尝试通过 WinSCP(公钥认证)建立连接。

sshd_配置

..
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
PasswordAuthentication no
UsePAM yes
..

@CentOS visudo - 添加以下 2 个条目

username ALL=NOPASSWD: /bin/su
Defaults:username !requiretty

WinSCP 设置:

Disable keyboard-interactive @ SSH authentication settings solves the problem for me. 
SCP settings command: sudo su -

答案2

正如@pragnesh 所建议的,您可以在 WinSCP FAQ 中找到所有说明登录后如何更改用户(例如 su root)?

您不仅需要向 添加sudo -sshell和yourusername ALL=NOPASSWD: ALL行(或类似内容)sudoers,而且还需要确保sudo不需要TTY。

虽然这是默认行为,但您可能对其进行了不同的配置。请确保requiretty从文件中删除该选项sudoers

您也可以只按用户更改此设置,请参阅sudoers:如何禁用每个用户的 requiretty

答案3

您需要在 WinSCP 登录设置中使用 sudo

检查一下WinSCP 常见问题解答

相关内容