ssh到内网服务器
使用frp连接内网和公网服务器,这样子就能通过ssh连接到内网的服务器,设置也比较的简单。
服务器端
在服务器端下载
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
tar zxvf frp_0.38.0_linux_amd64.tar.gz
cd frp_0.38.0_linux_amd64
服务端的配置是frps.ini,默认绑定了7000端口
启动
./frps -c ./frps.ini
同时注意要去腾讯云开启7000的访问端口,ubuntu的防火墙也要开启7000端口,这样子外界才能连上。
sudo ufw allow 7000
客户端
同样的在客户端进行安装配置
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
tar zxvf frp_0.38.0_linux_amd64.tar.gz
cd frp_0.38.0_linux_amd64
客户端的配置文件在frpc.ini,不过在修改下面的文件的同时,先去看看/etc/ssh/sshd_config里面的端口,因为我的是在虚拟机内,用vnc连接的端口是映射的真实端口。比如我的真实端口是23000,虚拟机内的端口是8880,我用vnc连接的是23000,所以我frpc设置的端口是23000,死活连不上,其实不是的,因为frpc在虚拟机内运行,所以直接使用虚拟机内的端口8880,这样子才能行。
[common]
server_addr = #你的服务器的ip
server_port = 7000 #刚才服务器开启的端口
[ssh_1] #这个名字可以取不一样,如果有多台被控机子都需要,那么不能都取ssh,否则会有冲突
type = tcp
local_ip = 127.0.0.1
local_port = 8880 #本地sshd的端口
remote_port = 23001 #服务器访问的映射端口
提示:如果报错login to server failed: EOF,那么需要在[common]里面加上tls_enable = true
然后运行,要么后台运行,要么用screen,具体可以百度
./frpc -c ./frpc.ini
这样子两台机子连接就会success了,然后要去腾讯云开启23001的访问端口,ubuntu的防火墙也要开启23001端口,这样子外界才能连上。
连接
然后通过ssh命令连接,注意端口,用户名和ip。端口就是刚才设置的服务器映射端口23001,这个端口会映射到内网连上的8880端口。用户为内网的用户,但是ip是自己公网服务器的ip。
ssh -i ~/.ssh/id_rsa -p 23001 内网的用户@你的服务器ip
下面为废弃的做法
前言
因为自己的论文实验环境需要部署一个分布式环境,但是环境不在本校,在其他的内网,所以需要用ssh反向代理到公网(云服务器),我们再从公网进行访问连接。
客户端的机子直接叫C,我的公网机子叫T(腾讯云的)。
准备
首先在自己的服务器T上面创建一个新的用户,用来连接远程服务器。
创建用户
#创建用户同时设置密码
sudo adduser bju
#设置密码,上一步设置过了,这一步跳过
sudo passwd
# 下面是给用户sudo的权限,我不给了,有需要的可以给
#然后修改sudoers文件,需要先给写的权限,写完再改回来
sudo chmod u+w /etc/sudoers
#修改文件,在最下面添加 ubuntu ALL=(ALL:ALL)
sudo vi /etc/sudoers
sudo chmod u-w /etc/sudoers
ssh连接
需要生成ssh-keygen,防止权限问题,先切到bju用户,然后生成
#切换用户,然后删除
su bju
cd
#生成秘钥
ssh-keygen
# 然后需要修改公钥的名称
mv id_rsa.pub authorized_keys
权限如下所示。
drwx------ 2 bju bju 4096 Nov 9 20:40 ./
drwxr-xr-x 4 bju bju 4096 Nov 9 20:48 ../
-rw-r--r-- 1 bju bju 571 Nov 9 20:03 authorized_keys
-rw------- 1 bju bju 2602 Nov 9 20:03 id_rsa
然后需要把id_rsa拷贝出来,因为直接拷贝文字不行,就用原来的ubuntu用户移动出来,然后通过sftp弄出来
#在ubuntu用户下,移动过来
sudo mv /home/bju/.ssh/id_rsa .
#然后所有人可读,否则弄出不来
sudo chmod a+r id_rsa
#然后通过xftp等软件可以拷贝出来了,或者直接ssh命令,但我不会
#然后删掉这个秘钥
sudo rm id_rsa
现在就能通过秘钥连接到bju用户了(麻烦死了)
ssh -i ~/.ssh/bju/bju_rsa bju@你的云服务器ip
反向代理
当然首先要先连到客户端的机子,有点尿,这里我用vnc viewer先连接到对面的树莓派,这样子就连上了内网,然后再ssh到内网的客户端C。
首先先拷贝密钥到对面的客户端C
scp -i ./id_rsa -P 23000 /home/pi/ root@162.105.159.107:/root/
由于我直接是root,所以下面的命令都不需要ssh
ssh -CfNg -R(命令行的关键) 2222(远程服务器端口):127.0.0.1:22(本地端口) -o ServerAliveInterval=60 bju@123.45.67.8(远程服务器)




