如何直接通过跳板机ssh到服务器

公司线上服务器都无法直接访问,必须通过一台跳板机来访问。比如要访问机器dev,则必须先ssh到跳板机gateway,然后再ssh到dev机器。

这样做自然可以减少攻击面,但是每次去dev机器执行命令,或者上传文件的时候,都要两次ssh,确实比较麻烦。

故Google之,可以使用ssh config中的ProxyCommand选项,比如我们先定义主机gateway的连接参数:

1
2
3
Host gateway
HostName gw.example.com
User XXX

然后我们需要定义主机dev的连接参数:

1
2
3
4
Host dev
HostName dev.ip.example.com
User XXX
ProxyCommand ssh -q -W %h:%p gateway

这样,ssh dev 命令就会先和gateway建立ssh连接,并把这个中间连接当作一个代理使用。不过需要注意的是,你的公钥除了必须在gateway上有之外,还必须在dev上有,这是和之前不一样的地方。

PS:之前考虑过 ProxyCommand ssh gateway nc %h %p ,但是考虑到机器上可能没有nc命令。后来发现ssh有-W参数,果断用之。

PPS:ProxyCommand参数中的-q是为了防止和跳板机的ssh连接产生多余的输出,比如不加 -q 就会导致每次断开连接的时候会多一句 Killed by signal 1.

如果这样做了,我们就可以玩一些高级的用法了,比如:


如何设置 nginx 和 php-fpm 的 Max open files 数量

刚开始也和同事一样,以为 Max open files/etc/security/limits.conf 控制。

不过,同事顺便在 /etc/pam.d/su 文件中添加了session required pam_limits.so ,为了探究为什么要添加这一条规则的时候,发现此设置只有在使用 su 命令切换用户的时候有效,使用 sudo 切换用户就无效了,更不用说像 nginx 这种使用 setuid 方式切换用户的了。

我们可以通过cat /proc/<pid>/limits 来清楚地知道该进程的 resource limit 信息,我就是这样才知道我们一直以来对 nginx 修改的 Max open files 数量并没有生效)

好,错误的方法终于说完了,现在我们说正确的方法:

由于使用 setuid 方式并不会通过 PAM 来设置 Max open files ,所以 nginx 提供了 worker_rlimit_nofile 选项来自己定制 worker 的 Max open files 数量,比如,在 nginx.conf 中添加全局参数:

worker_rlimit_nofile 65535;

同样的,php-fpm 也有类似的参数

rlimit_files

只需要在 /etc/php5/fpm/php-fpm.conf 文件中添加该参数:

rlimit_files = 65535

即可设置 nginx 和 php-fpm 的 Max open files 数量。


在 CentOS 7 上部署 L2TP/IPSec VPN 服务

首先安装strongswan和xl2tpd:

1
yum install strongswan xl2tpd

记得开启IP转发,修改 /etc/sysctl.conf 修改如下:

1
2
3
4
5
6
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

并重启使之生效。(执行sysctl -p 应该也是可以的,但一定要验证一下是不是生效了,实在不行就重启吧。)

接下来修改 /etc/strongswan/ipsec.conf 文件,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
config setup

conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1

conn l2tp
keyexchange=ikev1 # IKE版本
left=<对外IP>
leftsubnet=0.0.0.0/0
leftprotoport=17/1701
authby=secret
leftfirewall=no
right=%any
rightprotoport=17/%any
type=transport
auto=add

然后修改 /etc/strongswan/ipsec.secrets 文件(没有此文件就新建一个):

1
2
# ipsec.secrets - strongSwan IPsec secrets file
: PSK "<PSK>"

IPsec的部分就完成了,接下来是L2TP。


Fedora 启动时初始亮度过暗的解决方案

本人惠普的本,安装 Fedora 后,启动后屏幕很暗。每次开机后必须使用 Fn 键来提高屏幕亮度,搜索了下,可以加启动参数来解决此问题。

解决方案一

添加启动参数 acpi_osi=Linux acpi_backlight=vendor 。 注意:我的电脑上,如果不加 acpi_osi=Linux 参数,屏幕亮度没有问题,但是笔记本休眠后无法唤醒。

解决方案二

添加启动参数 video.brightness_switch_enabled=1 video.use_bios_initial_backlight=0 。 来自 https://bugzilla.redhat.com/show_bug.cgi?id=912599#c4


ProFTPD限制FTP模式

以前搞过ProFTPD禁止主动模式,但是这两天有这个需求的时候却忘记了,看来得写一日志记录下。

首先,环境是 fedora 17 + proftp 。

默认的配置是主动模式和被动模式都可用。

主动模式下访问记录:

1
2
3
4
Command:   
PORT 127,0,0,1,237,87
Response:    200
PORT command successful

被动模式访问记录:

1
2
Command:    PASV
Response:    227 Entering Passive Mode (127,0,0,1,157,107).

如果需要禁止主动模式访问,则只需要在/etc/proftd.conf<Global>段中添加如下三行:

1
2
3
<Limit PORT>
DenyAll
</Limit>

即禁止PORT指令,则主动模式访问记录变为:


Robert Lu

关注我的公众号