Rootop 服务器运维与web架构

2018-03-07
发表者 Venus
ssh远程登陆执行多条命令已关闭评论

ssh远程登陆执行多条命令

ssh登陆到远程主机,要执行多条命令。

2种方法实现:
1、通过分号分隔 (;) ssh root@192.168.10.14 “ls; df -h” 注意有双引号
2、通过 ssh root@192.168.10.14 << remote_command
命令1
命令2
命令3
exit
remote_command

remote_command 之间的命令就会在远程主机上依次执行。

不过这样执行时候会有个提示,Pseudo-terminal will not be allocated because stdin is not a terminal. 伪终端的问题。
可以加个 -q 参数,静默执行
ssh -q root@192.168.10.14

2018-03-07
发表者 Venus
ssh秘钥第一次登陆时,跳过公钥检查已关闭评论

ssh秘钥第一次登陆时,跳过公钥检查

配置了秘钥登陆,免去输入密码,但是第一次登陆时会有一个提示动作
The authenticity of host ‘192.168.10.14 (192.168.10.14)’ can’t be established.
ECDSA key fingerprint is SHA256:zCrwLrWV8zc9FMtIt0C+bV+CR3yfEcXsgpSSD4/x2yk.
ECDSA key fingerprint is MD5:6b:a0:a2:ab:08:c0:33:b1:df:2f:63:f0:9d:ba:9c:1f.
Are you sure you want to continue connecting (yes/no)?

通过ssh指定参数 StrictHostKeyChecking no 可以跳过检查,或者改ssh配置文件。
这里选择跳过:
ssh -o “StrictHostKeyChecking no” root@192.168.10.14

SSH 公钥检查是一个重要的安全机制,可以防范中间人劫持等黑客攻击。
但是在特定情况下,严格的SSH公钥检查会破坏一些依赖SSH协议的自动化任务,就需要跳过SSH的公钥检查。

2018-02-24
发表者 Venus
ajax请求跨域问题已关闭评论

ajax请求跨域问题

比如当前浏览的地址为 http://www.a.com/login.php
login.php 里有个 ajax 的 post 请求到 http://www.a.com/login.php ,post数据中有用户名、密码,
后台判断是否正确,返给客户端处理结果,浏览器再接着跳转。

这是正常的处理流程,如果post到另一个域名下,就产生跨域问题了。浏览器会停止执行。

下面是本地测试代码:
访问地址为:http://cp/admin/login.php
ajax请求地址是:http://test/cross.php

<script>
function login(){
 var postdata = $(".form-signin").serialize();
 $.post("http://test/cross.php", postdata, function(data){
 if(data.s == 0){
 location.href = "/admin/index.php";
 }else{
 $(".alert").text(data.err).slideDown(200);
 $(".form-signin .form-control").addClass("refuse");
 }
 }, "json");
}
</script>

cross.php代码如下:

<?php
echo json_encode(array('s'=>0));

这样测试以后,打开chrome调试,发现是无法触发跳转。浏览器发现是跨域请求(不安全),在浏览器中就直接不执行了。

把cross.php添加一个响应头。

<?php
header('Access-Control-Allow-Origin:*');
echo json_encode(array('s'=>0));

再次测试发生了跳转。
*号代表所有域

还有一种方法就是在nginx或者apache中,添加一个响应头。
如nginx下:
server {
listen 80 default_server;
add_header Access-Control-Allow-Origin ‘*’ ;