哦。
ForceCommand internal-sftp
在摆弄以/etc/ssh/sshd_config
允许root
通过 SFTP 登录后,我将自己锁定在 Amazon EC2 盒子上的 SSH 之外 。
SFTP 仍然工作正常,但 PuTTY 立即死机,例如:
这里奇怪的是,SFTP 仍然工作正常,并允许我像当前一样登录root
(因为我所做的更改) - 所以我打开了一个 WinSCP 窗口,我可以浏览任何我喜欢的内容并编辑内容。
当我尝试使用以下命令从另一个 Linux 机器进行连接时:
ssh -i keyfile.pem [email protected] -p [portnumber]
我得到以下回复:
This service allows sftp connections only.
Connection to [hostname] closed.
我已成功删除,ForceCommand internal-sftp
但远程/etc/ssh/sshd_config
运行时遇到问题service ssh restart
。当我sftp
使用前缀执行此操作时!
,它说它有效 - 但我可以告诉它没有,因为侦听端口没有改变。
答案1
ForceCommand internal-sftp
从服务器中删除/etc/ssh/sshd_config
并重新启动服务器(以刷新配置文件),然后我又回来了。
答案2
sftp
当我使用前缀执行此操作时!
,它说它有效
有!但!
在客户端执行命令,而不是在服务器上执行。因此,请注意您可能无意中在客户端上更改的内容。
SFTP 协议故意不允许客户端指定在服务器上运行的命令。它只是一个文件传输协议。
但是,您可以通过将命令写入将要执行的文件来间接触发服务器上的命令。例如,您可以将 at 作业放入/var/spool/cron/atjobs
(如果您知道要在作业文件和.SEQ
文件中写入什么内容 — at 假脱机格式并非完全微不足道)。您可以编辑/etc/crontab
或其他一些 crontab。通常,仅限 SFTP 的用户仅限于其主目录,但由于具有对整个文件系统的 root 访问权限,没有完全 SSH 访问权限的 SFTP 实际上无法提供任何安全性,只是带来不便。
因此:
- 用于
sftp
下载/etc/ssh/sshd_config
和/etc/crontab
. - 编辑下载的文件以删除该行并添加一个以 root 身份运行(或任何您的 init 系统想要的)的
ForceCommand
cron 作业。service ssh restart
/etc/init.d/ssh restart
- 用于
sftp
上传修改后的文件。 - 等待 cron 作业触发。
- 用于
ssh
登录和编辑临时 cron 作业。