无法使用 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 服务器解决了问题。
我在通过 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 服务器解决了问题。