首页 > 解决方案 > 无法使用 Apache 通过 SSH 连接服务器

问题描述

我遇到了通过 ssh 连接到服务器的问题。

我有一个服务器 A 和 B。从服务器 AI 运行解析服务器 A 上的日志的 .sh 脚本,然后连接到服务器 B 并执行相同的任务。在控制台中一切正常,但在网络界面上却不行。

我使用 cgi 和 apache2 连接到服务器。当我在服务器 A 上运行脚本时,它会解析日志并返回 relult,但是无法连接服务器 B。

这是httpd的日志:

[Thu Nov 22 14:09:34 2018] [error] [client 10.1.68.243] Permission denied, please try again.\r, referer: http://cab-prod-comp-sd/cgi-bin/example-bash.sh?val_x=RDWH.&val_z=1

服务器一个脚本:

-rwsrwxr-x 1 sas sas 2217 Nov 22 11:25 /sas/oljas_scripts/find_usage_of_tables.sh

服务器 B 脚本:

-rwxrwxr-x 1 sas      sas    1202 Nov 19 09:16 find_usage_of_tables.sh

我连接到服务器 B 的部分:

SAS_RESULTS=$(ssh sas@sas-p1l-comp /sas/oljas_scripts/find_usage_of_tables.sh $table_name)

感谢任何帮助。谢谢!

编辑:

我需要向用户 Apache 授予权限吗?这个怎么做?

标签: linuxbashapachesshcgi

解决方案


这是我从你的问题中假设的:

  • 系统 A 使用用户“apache”运行 httpd。
  • 系统 B 有一个名为“sas”的用户。
  • 您希望用户“apache”使用“sas”用户连接到系统 B。
  • 您的连接代码未显示正在使用的任何密码或密码。您也没有提到 ssh 代理,因此 ssh 连接是通过 ssh 密钥完成的。
  • 系统 B 上的 sshd 配置为允许无密码连接(即使用密钥验证)。从上面的评论中,看到这个:https : //superuser.com/questions/543626/ssh-permission-denied-on-correct-password-authentication,John Siu 的回答。

在系统 A 上,用户“apache”:

  • 如果它还没有它们,在 ~/.ssh 你应该设置一个私有和一个公共 ssh 密钥(ssh-keygen,在网上检查,有据可查)。

在系统 B 上,用户“sas”:

  • 用户“sas”在 ~/.ssh 中创建(如果需要)一个名为authorized_keys.
  • 在此文件中,将系统 A 中的“apache”用户的公钥放入。
  • 这将允许系统 A 上的用户“apache”使用用户“sas”连接到系统 B。

在系统 B 上要避免的耦合陷阱

  • 确保用户 "sas", ~/.ssh 的权限为 700。
  • 用户“sas”,~/.ssh/authorized_keys 的权限为 600。
  • 用户“sas”的权限,〜是700。这里我的意思是“sas”的主目录。前任。〜对于“sas”是/home/sas,那么如果ls -al /home您应该看到目录sas 700。

要调试你可以做ssh -v -v -v sas@sas-p1l-comp.


对于你关于known_hosts的问题,在系统A上,当它第一次连接到系统B时,如果它在文件中没有找到系统B,ssh会为你添加它。但是您必须至少手动执行一次。ssh 客户端会要求您确认添加,而这只能在命令行上完成。Web 界面不会回答客户端。所以手动连接一次,然后你就可以上网了。


在此之前,尝试在系统 A 上设置 httpd 没有意义。这必须首先在命令行上工作。


推荐阅读