我仔细按照此处的说明进行操作,但是我没有正确地进行此操作。这是我所做的:
- 运行 WinSCP 输入主机名(我的实例的弹性 IP)
- 输入用户名“ec2-user”
- 输入公钥文件
- 选择 SCP 作为协议
- 在 SCP/Shell 设置下,我选择了“sudo su -”
- 点击登录
- WinSCP 向我询问密码密钥,点击 OK
- 显示此错误
跳过启动消息时出错。您的 shell 可能与应用程序不兼容(推荐使用 BASH)。
注意:这适用于腻子
归功于这篇文章和这个 AWS 论坛主题,看来诀窍是Defaults requiretty
在 sudoers 中发表评论。我现在的程序:
sudo visudo
,一个特殊的命令来编辑 /etc/sudoers.Defaults requiretty
。在该行之前插入一个井号 ( #
) 以将其注释掉:#Defaults requiretty
:wq
以写入文件并退出visudo
。在 WinSCP 中:
sudo su -
..ppk
file)。WinSCP 不支持需要终端仿真或用户输入的命令。
请参阅:http ://winscp.net/eng/docs/remote_command#limitations
由于sudo su -
需要密码,因此它不起作用。
有一种解决方法:在root
不提示输入密码的情况下进行登录。您可以通过编辑通常位于的 sudoers 文件/etc/sudoers
并添加:
root ALL=NOPASSWD: ALL
不用说,这不是一件好事 - 原因应该很明显:)
我遇到了同样的问题,并使用本教程中的步骤解决了它。我会在这里发布它,但我没有足够的图像/屏幕代表。
http://cvlive.blogspot.de/2014/03/how-to-login-in-as-ssh-root-user-from.html
以下教程对我有用,并提供了有用的屏幕截图。以具有 sudo 权限的普通用户身份登录只需要调整一些 WinSCP 选项。 http://cvlive.blogspot.de/2014/03/how-to-login-in-as-ssh-root-user-from.html
将会话/文件协议设置为:SCP,输入主机/实例 ip、端口(通常为 22)和常规用户名。如果登录需要,请输入密码凭据。添加高级/SSH/身份验证/私钥文件。
取消选中 Advanced/SSH/Authentication/attempt "keyboard interactive" authentication 应该允许 Advanced/Environment/SCP Shell/Shell/Shell: sudo su - 提供 sudo 权限以作为非所有者用户访问网络服务器目录。
2017 年 8 月 3 日更新
WinSCP 日志记录有助于解决问题: https ://winscp.net/eng/docs/logging
[WinSCP] 日志可以从首选项对话框的日志页面启用。也可以分别使用 /log 和 /xmllog 参数从命令行启用日志记录,这对脚本特别有用。在 .NET 程序集中,使用 Session.SessionLogPath1) 启用会话日志记录。
根据 WinSCP 连接错误,某些服务器安装可能需要将指令添加到(Ubunto、CentOS、other-Linux-Server)/etc/sudoers 文件以不需要指定用户的 TTY。在 /etc/sudoers.d/ 中创建文件(使用 Amazon 命令行界面或 PuTTY 等工具)可能比编辑 /etc/sudoers 更好。一些 /etc/sudoers 版本推荐它:
此文件必须以 root 身份使用“visudo”命令进行编辑。请考虑在 /etc/sudoers.d/ 中添加本地内容,而不是直接修改此文件。有关如何编写 sudoers 文件的详细信息,请参见手册页。
通过命令行编辑 sudoers 文件(以 root 身份)时,应使用“visudo”命令打开文件,因为它将解析文件以查找语法错误。/etc/sudoers.d/ 文件通常由 root 拥有并以最小权限进行 chmod。可以引用默认的 /etc/sudoers 文件,因为它应该在安装时自动具有推荐的 chmod 权限。例如:0440 r--r----- 。
https://superuser.com/a/869145:
visudo -f /etc/sudoers.d/somefilename
Defaults:username !requiretty
有用的网址:
WinSCP论坛:
WinSCP 文档:https ://winscp.net/eng/docs/faq_su
使用 SCP 协议,您可以在 Advanced Site Settings 对话框的 SCP/Shell 页面上将以下命令指定为自定义 shell:
须藤-s
[...]
请注意,由于 WinSCP 无法实现终端仿真,您需要关闭 sudoers 选项 requiretty。
Ubuntu Apache /etc/sudoers 中的说明建议将指令添加到 /etc/sudoers.d 而不是直接编辑 /etc/sudoers。根据安装情况,向 /etc/sudoers.d/cloud-init 添加指令也可以。
按照实例文档中提供的步骤创建具有 sudo 权限的 SSH 测试用户可能会有所帮助,以确保用户具有推荐的实例设置,并且可以在不影响其他用户的情况下影响和删除对服务器 sudoer 文件的任何更新。
我在 Debian Linux 服务器上启用了 SSH root 登录:要在 Debian Linux 系统上为 root 用户启用 SSH 登录,您需要首先配置 SSH 服务器。打开/etc/ssh/sshd_config
并更改以下行:
FROM:
PermitRootLogin without-password
TO:
PermitRootLogin yes
完成上述更改后,重新启动 SSH 服务器:
/etc/init.d/ssh restart
然后我在winscp中使用带有root用户名的SCP文件协议。
在 SCP/Shell 设置下,选择 /bin/bash,而不是“sudo su -”。
它应该工作。