机器代号 | 机器位置 | 地址 | 账号 | ssh/sshd 端口 | 是否需要运行sshd |
---|---|---|---|---|---|
A | 公网 | 阿里云IP | root | 22 | 是 |
B | 内网 | localhost | jw | 22 | 是 |
C | 测试 | localhost | test | 22 | 否 |
配置步骤
ssh-keygen -t rsa
[B] 生成钥匙-直接回车默认在.ssh下,然后一路回车,不输入密码,直接创建完毕cat ~/.ssh/id_rsa.pub | ssh root@阿里云IP 'cat >> .ssh/authorized_keys'
[B] 把生成的公钥传输至Assh -NfR 1111:localhost:22 root@阿里云IP -p 22
[B] 内网主机B主动连接服务器Ass -ant |grep 1111
[A] 服务器A上看到他的1111端口已经开始监听ssh jw@阿里云IP -p1111
[C] 测试连接成功
优化
autossh -M 2222 -NfR 1111:localhost:22 username@servername -p 22
[将上面第3步换成这个] 反向ssh可能会不稳定,主机B对服务器A的端口映射可能会断掉,那么这时候就需要主机B重新链接,而显然远在外地的我无法登陆B
问题记录
Q: 操作步骤5出现: ssh_exchange_identification: read: Connection reset by peer
A: [B]机器上未安装或未启动ssd ubuntu安装 apt-get install openssh-server
Q: 操作步骤3出现:Warning: remote port forwarding failed for listen port 1111
A: 重复操作,机器[A]上已经对1111端口开始监听需要登录到[A]上 sudo netstat -apn | grep 1111
kill -s 9 [进程ID]
, 再次执行步骤3成功.
Q: authorized_keys 文件不存在?
A: 可以自己手动创建 更多
相关资料
—————更新 2018年7月21日16:19:37 ————————
sudo vi /etc/ssh/sshd_config
TCPKeepAlive yes
_打开保持tcp连接设置
CentOS-7中官方去除了源: autossh
, 一下为手动编译安装. 转自文章
$ sudo apt-get install gcc make
$ wget http://fossies.org/linux/privat/autossh-1.4e.tgz
$ tar -xf autossh-1.4e.tgz
$ cd autossh-1.4e
$ ./configure
$ make
$ sudo make install
如果autossh-1.4e.tgz网站中无法下载可以从网盘获取后上传到服务器中: 链接:https://pan.baidu.com/s/180PZK-I2rR6oibIz3KJ7rQ 密码:g00f