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

时间:2011-06-20 16:04:35

标签: amazon-ec2 sudo putty scp winscp

我谨慎地遵循了说明here但是我没有正确使用它。这是我做的:

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

    跳过启动消息时出错。您的   shell可能与之不兼容   申请(建议使用BASH)。

    注意:这适用于Putty

5 个答案:

答案 0 :(得分:8)

归功于this postthis AWS forum thread,似乎诀窍就是 在sudoers中注释掉Defaults requiretty。我的程序现在:

  1. 使用Putty登录您的EC2实例。
  2. 运行sudo visudo,一个编辑/ etc / sudoers的特殊命令。
  3. 按Insert键开始插入模式。
  4. 找到第Defaults requiretty行。在该行之前插入一个哈希符号(#)以将其注释掉:
    #Defaults requiretty
  5. 按Esc键退出插入模式。
  6. 键入:wq以写入文件并退出visudo
  7. 在WinSCP中:

    1. 在高级>下;环境> SCP / Shell,将Shell更改为sudo su -
    2. 在SSH>下验证,选择您的私钥文件(.ppk文件)。

答案 1 :(得分:2)

我遇到了同样的问题,并使用本教程中的步骤解决了这个问题。我会在这里发布它,但我没有足够的图像/屏幕代表。

http://cvlive.blogspot.de/2014/03/how-to-login-in-as-ssh-root-user-from.html

答案 2 :(得分:1)

  

WinSCP不支持需要终端仿真或用户输入的命令。

请参阅:http://winscp.net/eng/docs/remote_command#limitations

由于sudo su -需要密码,因此无法使用。

有一种解决方法:在不提示输入密码的情况下进行root登录。您可以通过编辑通常位于/etc/sudoers并添加:

的sudoers文件来执行此操作
root ALL=NOPASSWD: ALL

毋庸置疑,这不是一件好事 - 原因应该是显而易见的:)

答案 3 :(得分:1)

以下教程为我工作,并提供了有用的截图。以具有sudo权限的普通用户身份登录只需要调整一些WinSCP选项。 http://cvlive.blogspot.de/2014/03/how-to-login-in-as-ssh-root-user-from.html

将会话/文件协议设置为:SCP,输入主机/实例IP,端口 - 通常为22,以及常规用户名。如果登录需要,请输入密码凭据。 添加高级/ SSH /身份验证/私钥文件。

取消选中高级/ SSH /身份验证/尝试“键盘交互”身份验证应该允许Advanced / Environment / SCP Shell / Shell / Shell:sudo su - 为非所有者用户提供访问webserver目录的sudo权限。

更新08/03/2017

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版本推荐它:

  

必须使用'visudo'命令以root身份编辑此文件。   请考虑在/etc/sudoers.d/中添加本地内容而不是   直接修改此文件。   有关如何编写sudoers文件的详细信息,请参见手册页。

通过命令行编辑sudoers文件(以root用户身份)时,应使用'visudo'命令打开文件,因为它将解析文件以查找语法错误。 /etc/sudoers.d/文件通常由root拥有,并使用最小权限进行编码。可以引用默认的/ 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协议,您可以将以下命令指定为自定义shell   在“高级站点设置”对话框的SCP / Shell页面上:

     

sudo -s

     

[...]

     

请注意,由于WinSCP无法实现终端仿真,因此您需要   有sudoers选项requiretty关闭。

Ubuntu Apache / etc / sudoers中的说明建议将指令添加到/etc/sudoers.d而不是直接编辑/ etc / sudoers。根据安装情况,向/etc/sudoers.d/cloud-init添加指令也可以。

通过遵循实例文档中提供的步骤来创建具有sudo权限的SSH测试用户可能会有所帮助,以确保用户具有推荐的实例设置,并且可以实现和删除对服务器sudoer文件的任何更新,而不会影响其他用户。

答案 4 :(得分:-2)

在SCP / Shell设置下,选择/ bin / bash。而不是“sudo su - ”。

它应该有用。