【问题标题】:Unable to connect server via SSH using Apache无法使用 Apache 通过 SSH 连接服务器
【发布时间】:2019-04-24 21:15:57
【问题描述】:

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

我有一个服务器 A 和 B。我从服务器 A 运行解析服务器 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

服务器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 授予权限?如何做到这一点?

【问题讨论】:

  • 通常情况下,您的脚本也可以被其他用户(包括 Apache)执行。第一个rwx 用于文件的所有者,第二个rwx 用于与文件所有者在同一组中的用户,最后一个r-x 表示任何其他用户都可以读取和执行这些文件。
  • 新加坡,谢谢。那么,问题出在已知主机上?
  • 我的意思是,我需要将我的主机 ip 10.1.68.243 添加到 known_hosts 吗?
  • 老实说,我不确定。不过试试看吧。

标签: linux bash apache ssh cgi


【解决方案1】:

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

  • 系统 A 使用用户“apache”运行 httpd。
  • 系统 B 有一个名为“sas”的用户。
  • 您希望用户“apache”使用“sas”用户连接到系统 B。
  • 您的连接代码未显示正在使用的任何密码或密码。您也没有提到 ssh 代理,所以 ssh 连接是通过 ssh 密钥完成的。
  • 系统 B 上的 sshd 配置为允许无密码连接(即使用密钥身份验证)。从上面的 cmets 中可以看到: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 没有意义。这必须首先在命令行中工作。

【讨论】:

  • 谢谢,Nic3500。我试试看
【解决方案2】:

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

【讨论】:

  • 您应该接受首选答案(复选标记)。这就是我们积累声誉点的方式(就像您回答问题时一样)。您的回答应该是对您的问题的评论。
猜你喜欢
  • 2019-10-19
  • 2016-07-15
  • 2013-04-09
  • 2017-07-17
  • 1970-01-01
  • 2018-08-14
  • 1970-01-01
  • 2020-11-02
  • 2021-05-09
相关资源
最近更新 更多