一.用ssh反向连接内网主机
可以通过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常见术语及对应的解释
前提:内网机器能访问外网机器,但是只有局域网IP
首先要设置信任关系。
然后在内网机器上运行脚本auto.sh(我这里设置时每小时运行一次,保持连接40分钟,如果不连接会自动断开)
#!/bin/bash
ssh -R 2222:localhost:22 root@外网机器IP touch login; sleep 2400; touch logout
需要登录内网机器时,使用如下命令即可
ssh -p 2222 root@localhost
最近想在家里登录公司的机器查看代码,期间碰到了一些问题,因为公司里的机器是没有对外IP的,而且请网管
做个端口映射也比较麻烦,所以在家里不能直接连接到公司的机器上。在网上搜索了一下,找到了ssh反向连接这
个解决方法,成功解决了不能直接连接的问题,并对反向连接的实现感兴趣,按照自己的想法,写了一个简单的示
例。
SSH反向连接的使用
1、什么是反向连接?
反向连接是指主机A(受控端)主动连接主机B(控制端),在主机A和主机B之间建立一个远程连接,通过这个连
接主机B可以主动的向主机A发送一些请求。
2、为什么需要主机A主动去连接主机B呢?
这是因为主机A在局域网内,如果没有对主机A进行端口映射,对于主机B来说主机A是不可见的,如果在主机B这


闽公网安备 35020602001684号