->
有时候我们不得不和网管对着干,去想办法去穿越某些防火墙,访问到我们要访问的资源。例如下面的情况,A 和 C 之间是有个墙的,不通。可有个 B 能访问到 C,而 A 又能访问到 B ,那我们可以通过你 ssh 做代理穿越那个墙。
A -> | -> C
\-> B -> C
在A 上面执行下面的命令
ssh -f -N -g -L 8888:C_ip:80 B_ip
参数的含义:-f 放到后台
-N 不在对方机器请求 shell
-g 能使得别的机器能连接 A 的那个端口
-L 就是代理,具体看 man
这样,在 A 上面访问 8888 端口,就能访问到 C 的 80 端口了。
那如果是下面的网络情况,那怎么办?A 能访问到 C,但是 C 不能直接访问 A。
A -> C
C-> | -> A
在 A 上面执行下面的命令
ssh -f -N -R 9999:A_ip:80 C_ip
-R 是反向代理, -g 在这里好像不好用不知道为什么
从 C 上面访问自己的 9999 端口,就会访问到 A 的 80 端口。
->
是从水木上面学来的。还参考了这个。
如果你工作的环境是下面这样的,那 ssh 的 proxycommand 对你会很有用。
your pc -> gw server -> work server
一般公司的服务器的网络都会设置安全级别,防止出现安全问题。那个 gw 也叫跳板机。需要在 gw 机器上面有 nc 。
修改 .ssh/config 文件,加上
Host gw
Hostname gw.abc.com
Host work
Hostname work.abc.com
User wd
ProxyCommand ssh gw nc -q 0 %h %p 2>/dev/null
这样直接 ssh work 就好了。
那个 -q 0 可能有些版本的 nc 不支持。去掉就好了。那个 %h 表示 hostname,那个 %p 表示 port,可以直接写死。其它的 man ssh_config 吧。
ssh一种更加安全的登录方式是使用rsa/dsa方式来做验证。密码口令很可能被猜出来,但是用dsa方式验证的ssh,除非他弄到你的私匙,否则肯定是安全的。
ssh-keygen命令可以用来生成rsa/dsa方式的公匙密匙。
ssh-keygen或者ssh-keygen -t rsa生成rsa方式的密匙。ssh-keygen -d 或者 ssh-keygen -t dsa生成dsa方式的密匙。具体rsa和dsa的区别看 这里 。
上面的命令会在~/.ssh文件夹中生成公匙(id_*sa.pub)和密匙(id_*sa),将pub文件中的内容copy到远程服务器你的home目录下面的.ssh目录中的authorized_keys[2]这个文件中,有没有最后的那个2要看你用的是ssh1还是ssh2方式,通常都有2。
然后就是远程服务器的这些文件需要有正确的权限,.ssh目录是700,authorized_keys2文件是644。
此后再登录服务器的时候应该就不需要输入密码了。
有一个小tip,就是给服务器的ip设置一个好记的形式,那么多的ip记住不容易阿,而且每次还得一个一个输入。具体方法就是修改hosts文件,添加类似下面的内容就可以了,相当于自己做了一个dns,呵呵。
#销售server
218.x.2.128 s128 xs xiaoshou
#db server
218.x.23.189 s189 db oracle
这样,以后访问s128或者s189就可以了,当然后面的xs、xiaoshou、db、oracle也都是别名,都可以用来访问。
还有一个tip,是关于term的。如果用的是urxvt,访问的远程服务器的时候可能会遇到“unknow terminal : rxvt-unicode” 类似的错误,如果出现了类似错误,会导致在服务器端vim和ls都没有颜色。解决方法是在.Xdefaults文件中添加URxvt.termName: xterm,或者.bash_profile里面自己设置一下TERM类型。
参考地址:http://www.5ilinux.com/ssh01.html
按照文档中的方法,使用SecureCRT生成公匙密匙,然后上传公匙,没问题。
用putty使用这个密匙的时候就出问题了,验证不了。
然后用putty生成公匙密匙,上传公匙,验证不了。
后来用openssh自带的ssh-keygen生成了公匙密匙,然后用putty的keygen转换了一下,用putty登陆就可以了。
★ 需求
最近公司服务器上面某个用户的帐号密码被修改了好几次。查看了一下,确实有人用他的帐号从外网ip(国外的ip)登陆过,猜想可能是他自己的电脑中木马或者什么病毒了。用户自己没有安全意识是很头痛的一个问题,其实给他们新建帐号的时候使用的都是简单密码,但是似乎都没有人上服务器自己修改,但是你又不能要求你的用户如何如何(比如给自己电脑装防火墙、杀毒软件etc),因为那是人家自己的事情。那么我就想,有没有一个方法可以限制某个用户只能从某个ip(或者ip列表)登陆呢?下面是一些解决方法。
阅读全文…
近期评论