我在具有 root 权限的 VM (ESXi) 上运行 CentOS Server 7。我有一个 bash 脚本(在我的 /etc/profile.d/ 目录中),该脚本在登录后立即执行。在我创建目录中的 .sh 文件之前,通过 WinSCP 连接到我的 VM 没有问题。创建文件并重新启动系统后,我无法再连接。OpenSSH 已安装。似乎 bash 执行阻止了连接。如果我随后通过控制台删除我的 .sh 文件,连接将再次建立。这是 CentOS 的问题吗?在 Ubuntu Server 下从未遇到过此问题。
我收到的错误:
无法初始化 SFTP 协议。主机是否正在运行 SFTP 服务器?
有什么想法吗?提前谢谢您!
答案1
您没有向我们展示您的脚本,因此这显然有些推测;但很可能您的脚本不应该存在,profile.d
因为它需要某种用户交互。
该配置文件应该专门保留给那些即使在非交互式会话中也需要运行的程序。
交互式功能的适当位置可能根本不在您的登录脚本中,但是像这样的东西$HOME/.bash_profile
至少可以避免对非交互式会话产生损害。
case $- in *i*) invoke your script here;; esac
如果您.bash_profile
已经有了,它可能已经包含一个case $-
您可以修改的声明,而不必添加第二个声明。