我仔细地遵循了这里的说明,但我没有正确地完成这项工作。以下是我所做的:
- 运行WinSCP输入主机名(我的实例的弹性IP)
- 输入用户名"ec2 user"
- 输入公钥文件
- 选择SCP作为协议
- 在SCP/Shell设置下,我选择了"sudo su-"
- 点击登录
- WinSCP要求我提供密码密钥,点击"确定"
- 显示此错误
跳过启动消息时出错。你的shell可能与不兼容应用程序(建议使用BASH)。
注意:这在Putty上有效
值得称赞的是,这篇文章和这个AWS论坛线程,似乎诀窍是在sudoers中注释掉Defaults requiretty
。我现在的程序:
- 使用Putty登录到您的EC2实例
- 运行
sudo visudo
,这是一个编辑/etc/sudoers的特殊命令 - 按插入键启动插入模式
- 找到线路
Defaults requiretty
。在该行之前插入一个散列符号(#
)以注释它:#Defaults requiretty
- 按Esc键退出插入模式
- 键入
:wq
写入文件并退出visudo
在WinSCP:中
- 在"高级">"环境">"SCP/Shell"下,将Shell更改为
sudo su -
- 在SSH>Authentication下,选择您的私钥文件(
.ppk
文件)
WinSCP不支持需要终端模拟或用户输入的命令。
请参阅:http://winscp.net/eng/docs/remote_command#limitations
由于sudo su -
需要一个密码,所以它不起作用。
有一种方法可以解决这个问题:在不提示输入密码的情况下登录root
。您可以通过编辑通常位于/etc/sudoers
的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)和常规用户名。如果登录需要,请输入密码凭据。添加高级/SSSH/身份验证/私钥文件。
取消选中Advanced/SSSH/Authentication/atry"keyboard interactive"身份验证应允许Advanced/Environment/SCP Shell/Shell:sudo su-为作为非所有者用户访问Web服务器目录提供sudo权限。
更新08/03/2017
WinSCP日志记录有助于解决问题:https://winscp.net/eng/docs/logging
[WinSCP]可以从"首选项"对话框的"日志记录"页面启用日志记录。还可以使用/log和/xmllog从命令行启用日志记录参数,这对脚本编写特别有用。在.NET程序集中,使用启用会话日志记录会话.SessionLogPath1).
根据WinSCP连接错误的不同,某些服务器安装可能需要在(Ubunto、CentOS、其他Linux服务器)/etc/sudoers文件中添加一条指令,以使指定用户不需要TTY。在/etc/sudoers.d/中创建文件(使用Amazon命令行界面或PuTTY等工具)可能是比编辑/etc/sudoers更好的选择。一些/etc/sudoers版本推荐它:
此文件必须使用"visudo"命令作为根目录进行编辑。请考虑在/etc/sudoers.d/中添加本地内容,而不是直接修改此文件。有关如何编写sudoers文件的详细信息,请参阅手册页。
当通过命令行编辑sudoers文件(作为root)时,应使用"visudo"命令打开该文件,因为它将分析该文件是否存在语法错误/etc/sudoers.d/文件通常由root和chmoded拥有,权限很小。可以引用默认的/etc/sudoers文件,因为它在安装时应该自动具有推荐的chmod权限。例如:0440 r--r-----。
https://superuser.com/a/869145:
visudo-f/etc/sudoers.d/somefilename
Defaults:username !requiretty
帮助链接:
- Stackoverflow:cloudinit如何将默认用户添加到sudoers.d
- https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos
WinSCP论坛:
- https://winscp.net/forum/viewtopic.php?t=3046
- https://winscp.net/forum/viewtopic.php?t=2109
WinSCP文档:https://winscp.net/eng/docs/faq_su
使用SCP协议,您可以将以下命令指定为自定义shell在"高级站点设置"对话框的SCP/Shell页面上:
sudo的
[…]
请注意,由于WinSCP无法实现终端仿真,您需要关闭sudoers选项requiretty。
Ubuntu Apache/etc/sudoers中的说明建议向/etc/sudoers.d添加指令,而不是直接编辑/etc/sudoers。根据安装情况,向/etc/sudoers.d/cloud-init添加指令也可以。
按照实例文档中提供的步骤创建具有sudo权限的SSH测试用户可能会有所帮助,以确保用户具有推荐的实例设置,并且可以在不影响其他用户的情况下影响和删除对服务器sudoer文件的任何更新。
我在Debian Linux服务器上启用了SSH root登录:要在DebianLinux系统上为root用户启用SSH登录,您需要首先配置SSH服务器。打开/etc/ssh/sshd_config
并更改以下行:
FROM:
PermitRootLogin without-password
TO:
PermitRootLogin yes
一旦您进行了上述更改,请重新启动SSH服务器:
/etc/init.d/ssh restart
源
然后我在winscp中使用了带有根用户名的SCP-File协议。
在SCP/Shell设置下,选择/bin/bash而不是"sudo-su-"。
它应该起作用。