SSH 的一些配置,方便远程连接,以及设置多设备跳转连接,完善VSCode远程连接服务器,以及基于 AutoSSH 和 VPS 实现内网穿透
SSH 免密登录
1. 客户端生成公私钥
本地客户端生成公私钥:(一路回车默认即可)
|
|
上面这个命令会在用户目录.ssh
文件夹下创建公私钥
|
|
会看到两个文件
|
|
2. 上传公钥到服务器
这里测试用的服务器地址为:192.168.50.1 用户为:root
|
|
上面这条命令是写到服务器上的ssh目录下去了
|
|
可以看到客户端写入到服务器的 id_rsa.pub (公钥)内容。
3. 测试免密登录
客户端通过ssh连接远程服务器,就可以免密登录了。
SSH 多次跳转连接
1. 前言
中心这边的VPN只能连新川办公室内网,虽然可以访问AiStation,但是没法访问本地的两台服务器,测试发现这边服务器地址为10.91.**.**,内网ip是10.92.**.**,VPN连接内网分配地址是92的,无法访问本地服务器,但是中心这边的机器虽然连的是92,却可以访问91的服务器,突发奇想做两次跳转连接,就可以访问服务器了,测试发现确实可行。具体连接示意图如下图所示:
2. 实现
图示已经展示了整个实现的步骤:
- 连接VPN接入内网
- 第一次SSH,登录办公室机器
- 第二次SSH,从办公室机器登录服务器
3. SSH config
两次登录还是有点麻烦,而且只能终端操作了,如果使用VSCode的SSH Remote来远程还是不方便,其实VS Code也可以两次SSH直连服务器,只需要改一下ssh的config文件就好,如下示例
|
|
AutoSSH
由于新川实验室的VPN连接很不稳定,经常断线,索性买了VPS来中转连接,通过AutoSSH实现内网穿透
1. VPS 选择
首选当然是白嫖(狗头)
-
国内免费:
- 阿里 free.aliyun.com
- 腾讯 cloud.tencent.com/act/free
- Az国内 azure.cn/zh-cn/pricing/1rmb-trial
-
亚太地区:
- Az30天 azure.microsoft.com/zh-cn/free/
GCP 365天 cloud.google.comAWS 365天 aws.amazon.com
免费试用加学生优惠才是最合适的,一般能做到一年不到一百,跳板机最好选国内的服务器,延迟低,国外服务器可以做其他的用途(再次狗头)
2. 服务器配置
我们共有三台设备,处于内网的计算服务器A,VPS服务器B,和处于外网用来连接内网的设备C。A和B可以联通,B和C联通,便可以实现C与A的联通,实现内网穿透。
VPS服务器设置
登录VPS服务器,开启VPS的ssh服务,记录VPS的公网ip,并开启一个不被其他服务占用的端口,一般随便选就好,此处服务器地址以22.22.22.22
为例,端口为1024
。
配置A服务器的ssh参数
|
|
完成参数修改后重启ssh服务systemctl restart sshd
内网服务器配置
配置免密登录,首先是生成ssh公私钥,一路回车默认即可:
|
|
上面这个命令会在用户目录.ssh
文件夹下创建公私钥
|
|
会看到两个文件
|
|
上传公钥到VPS服务器 用户为:root
|
|
上面这条命令是写到VPS服务器上的ssh目录下去了,以后通过ssh连接远程服务器,就可以免密登录了。
3. Autossh 配置
安装auotssh
sudo apt-get install autossh
auotssh
反向代理
|
|
完成后便完成A与C之间的连接,这时候C便可通过B跳转登录到A服务器
4. 外网连接
完成内网服务器A的autossh配置后,位于外网的服务器C便可通过B跳转连接A了
|
|
此处连接有两点需要注意:
- 首先是
-p
指定端口,也就是B服务器开启的端口,用于监听A服务器的ssh连接 - 其次是ssh登录的用户为A服务器的用户,虽然登录地址是还是B服务器,当其实是会跳转到A服务器,所以要用A的账号来登录。 `
5. Autossh 自启动
配置autossh.service
sudo vim /etc/systemd/system/autossh.service
|
|
完成后,通过以下命令启停和查看autossh服务进程
|
|