一.用ssh反向连接内网主机
最近为了这件事情很郁闷。
我们小区是长宽(长城宽带),开始的时候,除了速度不怎么样没有什么别的坏处,还可以24小时在线下东西。我到了公司以后,就
用ssh连接上自己的机器,如果需要什么东西都可以很方便。
但是过了一段时间,发现用标准的22端口已经连接不上自己的机器了,在公司ping都ping不通自己的机器。怀疑是路由器节点在搞鬼,于是将 ssh转移到80端口,问题基本解决。
好景不长,今天发现居然连80端口都无法访问了。
于是上网找到这个。
大意就是说可以通过ssh反向连接到内网主机(有防火墙的主机)
好,下面是步骤:
0. 在两侧都安装ssh
1. 在被控端运行ssh -f -N -R 10000:localhost:22 username@主控端ip。这里的10000和22是端口号,也就是说,在主控端10000端口和被控端的22端口上建立了一个通道。
2. 在主控端运行 ssh username@localhost -p 10000。这里的username是你被控端的username,10000就是刚才的那个端口号。
ok了。
二.SSH公钥(public key)验证
也就是如何不用密码的SSH登录… 本讲解适用于Client/Server都使用OpenSSH的情况(商业版SSH的key文件格式有所不同,这里的方法直接使用是无效的)。
目标: Client 免输密码ssh登录Server
SSH支持多种登录验证方式,我们默认使用的是键盘交互方式(keyboard- interactive),也就是手工输入密码的那种。这里我们要改成公钥(publickey)验证方式,并且设置
passphrase为空,以达到免输密码登录的目的。
1. Client端:
cd ~/.ssh
#产生公钥文件(id_dsa.pub)和私钥文件(id_dsa), 类型DSA, 长度1024 bits
#注意询问passphrase的时候直接回车
ssh-keygen -t dsa -b 1024
#将公钥复制到远程主机去
scp id_dsa.pub Server:~/.ssh/id_dsa.pub.Client2. Server端:
cd ~/.ssh
#将Client的公钥放入Server的信任列表
cat id_dsa.pub.Client >> authorized_keys
#更新权限,很重要
chmod 0600 *从此以后Client SSH登录Server就不要手工输入密码了。
三.备注 - SSH常见术语及对应的解释
SSH: 泛指SSH协议及软件产品
SSH-1: SSH协议第1版。
SSH-2: SSH协议第2版。
SSH1: Tatu Yl?nen的SSH软件产品,即最早的SSH-1协议的软件实现。现在由SSH Communications Security, Inc.维护。
SSH2: 即SSH Communications Security公司推出的商业版SSH-2协议的软件产品。该版本是收费的。(这也是开源社区开发OpenSSH的由来)
ssh(注意都是小写): SSH1, SSH2, OpenSSH, F-Secure SSH和其它SSH软件产品中包含的客户端程序。在SSH1和SSH2中,也有相应的别名ssh1, ssh2。
OpenSSH: OpenBSD项目实现的免费的兼容SSH-1和SSH-2协议的软件产品。
OpenSSH/1: 指代使用SSH-1协议的OpenSSH
OpenSSH/2: 指代使用SSH-2协议的OpenSSH
(source: “SSH, The Secure Shell: The Definitive Guide“(即”蜗牛书”), by Daniel J. Barrett and Richard E. Silverman, O’Reilly Media Inc., p6.)
阅读(5259) | 评论(0) | 转发(0) |