2015年3月

在家办公终极解决(socat)

办公室内网机器

nohup socat tcp:hostip:8888,forever,interval=10,fork tcp:127.0.0.1:22 >socat.log &

远程做代理的公网机器

vim socat.sh

#!/bin/sh
while true; do
  killall -9 socat
  killall -9 socat
  socat tcp-listen:8888 tcp-listen:2222
  sleep 30
done

chmod u+x socat.sh
nohup ./socat.sh >socat.log &

在家浏览内网

ssh -p 2222 -N -D 7070 user@hostip

将浏览器设为代理:127.0.0.1:7070

linux踢出用户的命令

查看机器里登录的用户(w命令)

w

结果

02:48:26 up 8:18, 5 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN IDLE JCPU PCPU WHAT
root tty1 - 18:30 8:15m 0.03s 0.03s -bash
root pts/0 59.172.140.97 01:56 39:54 0.04s 0.04s -bash
root pts/1 59.172.140.97 02:17 28:03 0.05s 0.05s -bash
root pts/2 59.172.140.97 02:25 17:02 0.03s 0.03s -bash
root pts/3 59.172.140.97 02:43 0.00s 0.01s 0.00s w

查看自己的终端

who am i

结果

root pts/3 2015-03-30 02:43 (59.172.140.97)

使用pkill命令踢出用戶

pkill -kill -t pts/2

用SSH做sock5代理

参数含义

-q: 表示该命令进入安静模式
-T: 是指该命令不占用shell
-N: 是指该命令不执行远程命令
-f: 是指该命令在后台运行
-D: [后面跟着socks5服务器的地址与端口]
-L: 将本地机端口转发到远端端口
-R: 将远端端口转发到本地机端口
-g: 允许远程主机连接转发端口
-C: 数据压缩传输

绑定本地端口

ssh -fNT -D 127.0.0.1:7070 username@host

本地端口转发

ssh -CfNg -L 7070:12.34.56.78:22 username@host

远程端口转发

ssh -CfNg -R 80:127.0.0.1:7071 username@host

转发的例子

来一个稍微复杂一点的,做网关的例子:
假如内网有一台提供ftp(linux,port is2121,称为A机器)的机器,通过网关服务器(linux,port is8888,称为B机器)进去,现在外网有一台C机器需要访问网关服务器的某个端口(port is21)来访问内网的ftp服务器。大家可以看到,其实这就像是一个基于ssh的防火墙程序,好,下面我们来具体操作:
1、login A 机器
#> ssh -CNfg -R 8888:localhost:2121 root@B机器IP
这样我们就在B机器上开了一个8888->2121的端口转换,但是由于8888端口只能侦听在localhost主机上,因此,虽然我们已经可以在B机器上使用
#> ftp localhost 8888
来访问真正的ftp服务器,但仍然无法提供给外网的机器访问

2、login B机器
#> ssh -CNfg -L 21:localhost:8888 root@localhost
这样做,是做本地机器上的21->8888端口转换,可以侦听在任何地址上的请求。
2(1)、如果C机器也是一台linux机器,那也可以这样设置:
#> ssh -CNfg -R 21:localhost:8888 root@C机器IP

3、使用C机器,
可以是linux下的ftp命令,也可以是windows下的客户端软件都可以访问B机器的21端口来连接后台真正的ftp服务器(真正的端口是2121),如果是按照2(1)中的设置,则访问的地址为本机IP。

SSH连接自身

最后的问题是SSH连接自身不行,需要ssh-key

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh localhost

SSH穿过防火墙访问内网(在家办公)

  1. 公司内网机器做配置
    vim ~/.ssh/config 添加如下
Host home-proxy
User root
Hostname <public-ip>
RemoteForward 2222:localhost:22
  1. 公司内网机器远程到home-host
ssh home-proxy
ping -i 5 127.0.0.1
  1. 在家里远程到home-proxy
ssh <public-ip>
ssh localhost -p 2222

一些参考链接

1.五事九思

CentOS配置NGINX的PHP环境

创建网络用户

groupadd www-data
useradd -g www-data www-data -M -s /usr/sbin/nologin

NGINX全局配置(nginx.conf)

user www-data;
worker_processes 2;

NGINX站点配置(default)

root   /var/www/html;
index  index.php index.html index.htm;
location / {
    root /var/www/html;
    try_files $uri $uri/ /index.html;
}
location ~ \.php$ {
    root   /var/www/html;
    fastcgi_pass   unix:/var/run/php5-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

PHP-FPM配置

listen = /var/run/php5-fpm.sock
user = www-data
group = www-data

更改目录权限

chown -R www-data:www-data /var/www/html

防火墙配置

iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
service iptables save

www.000webhost.com