在学习Amazon EC2的过程中,我认为在登录后始终成为root用户是一个好主意。我将此行添加到了.bashrc中。
/usr/bin/sudo /bin/bash
这样,我不必以root用户身份进行SSH登录,但登录时会自动切换。但是,当它位于.bashrc中时,它将破坏任何尝试连接的SFTP客户端。这些错误因所使用的客户端而异,但是即使它们已成功连接到远程主机,通常也会以超时结束。WinSCP建议主机上可能未运行SFTP服务器。
我现在完全知道添加该行是一个不好的举动,但是我不知道为什么这会破坏SFTP。我以ec2-user身份登录,但成为root用户(我认为),但我不明白为什么这会导致问题。
在bash世界中,配置文件初始化文件通常调用rc初始化文件,如本StackOverflow文章中所述。因此,rc初始化文件未绑定到仅交互式shell。
据我所知,SFTP协议是SSH shell的一种非交互式用法,用于执行sftp服务器程序,该程序通过其stdin
和stdout
流与调用方进行交互。关于您的问题,我想发生了两种不希望发生的事情之一:
sudo
命令要求输入密码,这是sftp客户端意外的,它希望与其sftp-server同事进行二进制交互
root用户无权访问sftp层调用的二进制文件(由于权限设置-但我想这是sudo的情况)
您应该有两种方法来解决此问题:
仅按照Martin的建议,将您的根自动切换限制为交互式shell,例如,使用tty命令:
if tty --silent
then
/usr/bin/sudo /bin/bash
fi
或创建/修改您的私有.bashprofile以便不从其中调用rc文件(至少仍要设置PATH)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句