无法使用 Apache 通过 SSH 连接服务器

Unable to connect server via SSH using Apache

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

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

我使用带有 apache2 的 cgi 连接到服务器。当我在服务器 A 上 运行 脚本时,它解析日志并 returns 结果,但是它无法连接服务器 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

服务器A脚本:

-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 权限吗?如何做到这一点?

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

  • 系统 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 中设置一个私有的和一个 public ssh 密钥(ssh-keygen,在网上查看,有据可查)。

在系统 B 上,用户 "sas":

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

系统 B 上要避免的夫妻陷阱

  • 确保用户 "sas"、~/.ssh 的权限为 700。
  • 用户 "sas"、~/.ssh/authorized_keys 的权限为 600。
  • 用户 "sas" 的权限,~ 是 700。这里我指的是 "sas" 的主目录。前任。 ~ 对于 "sas" 是 /home/sas,那么如果你 ls -al /home 你应该看到带有 700.
  • 的目录 sas

要进行调试,您可以执行 ssh -v -v -v sas@sas-p1l-comp.


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


在此之前,尝试在系统 A 上设置 httpd 毫无意义。这必须首先在命令行中运行。

谢谢大家! 运行 用户 SAS 的 apache 服务器解决了问题。