WinSCP 连接到 Amazon AMI EC2 实例,在登录到 "root" 后更改用户



我仔细地遵循了这里的说明,但我没有正确地完成这项工作。以下是我所做的:

  1. 运行WinSCP输入主机名(我的实例的弹性IP)
  2. 输入用户名"ec2 user"
  3. 输入公钥文件
  4. 选择SCP作为协议
  5. 在SCP/Shell设置下,我选择了"sudo su-"
  6. 点击登录
  7. WinSCP要求我提供密码密钥,点击"确定"
  8. 显示此错误

跳过启动消息时出错。你的shell可能与不兼容应用程序(建议使用BASH)。

注意:这在Putty上有效

值得称赞的是,这篇文章和这个AWS论坛线程,似乎诀窍是在sudoers中注释掉Defaults requiretty。我现在的程序:

  1. 使用Putty登录到您的EC2实例
  2. 运行sudo visudo,这是一个编辑/etc/sudoers的特殊命令
  3. 按插入键启动插入模式
  4. 找到线路Defaults requiretty。在该行之前插入一个散列符号(#)以注释它:
    #Defaults requiretty
  5. 按Esc键退出插入模式
  6. 键入:wq写入文件并退出visudo

在WinSCP:中

  1. 在"高级">"环境">"SCP/Shell"下,将Shell更改为sudo su -
  2. 在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-"。

它应该起作用。

最新更新