如何远程SSH连接在家的服务器主机(内网穿透)

avatar
作者
筋斗云
阅读量:0
如何使用SSH远程连接在家的主机 

前言

事情的起因是自己搭了个服务器玩(使用的镜像是Ubuntu20.04 LTS),也想让身边的同学也能自己搞来玩。奈何自己是个小菜鸟,自己也整不明白,所以写这篇博客来记录这个学习(折腾)过程,方便自己下次配置学习。

ps:本文我是用markdown写的,原文发在我自己的博客网站(使用ssh远程连接在家的主机),因为是直接复制过来的,图片没有加载出来,想看图的同学请移步我的博客网站链接。

一、安装并开启SSH服务

首先当然是SSH服务的安装环节~

服务器端安装

在远程主机安装ssh-server

sudo apt update                 #更新软件库 sudo apt install openssh-server #安装

运行以下命令检测主机是否已开启ssh服务,正在运行ssh服务终端会显示active

sudo systemctl status ssh

或者使用以下命令,显示sshd表示正在运行ssh-server

ps -e | grep ssh

客户端安装

我们日常生活客户端一般采用windows系统,自带ssh客户端服务,想用图形化界面的直接下载几个ssh工具就好了(如PuTTY、Terminal等)。而Ubuntu系统也是自openssh-client,所以我们待会直接在终端输入命令就行。

二、内网配置连接

1.生成密钥

如果是在client端生成密钥对,则把client端的公钥copy到server端,如果是在server端生成密钥对,则把私钥copy到client端。

在服务器主机端生成密钥对。

ssh-keygen

出现提示 'Enter file in which to save the key (/home/user/.ssh/id_rsa): ' 时,可以输入想要更改的秘钥名称xxx。下一步显示输入加密信息,咱们小白也不懂,直接连续按两次回车生成密钥对。

生成完会保存在当前路径,使用ls命令可以看到当前路径多了两个文件,分别是“xxx”和“xxx.pub”。

将生成的公钥内容写入authorized_keys文件中,输入以下命令

cat xxx.pub >> /root/.ssh/authorized_keys

然后想办法将私钥发给客户端,我是通过FTP发送给客户端,FTP配置方法网上有很多在此不再赘述。

2.更改权限

修改服务器端文件权限

chmod 600 /root/.ssh/authorized_keys chmod 700 /root/.ssh

修改客户端文件权限

chmod 400 <文件路径>/xxx

3.密钥配置

编辑服务器端配置:

sudo vim /etc/ssh/sshd_config

取消以下内容的注释:

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

重启服务

service sshd restart

4.密钥登陆

在客户端登录时加载密钥

ssh -i  ~/.ssh/秘钥 -p <端口> <登录名>@<主机IP> 

按照提示登录即可~到此配置内网ssh连接完成!!!

如果你想关闭服务器端的密码登录功能,可以修改服务器端的配置:

sudo vim /etc/ssh/sshd_config #找到以下内容,改为“no” ##PasswordAuthentication no

三、外网配置连接(使用内网穿透)

使用内网穿透于我这种小白而言是肥肠煎蛋的,但是有个小弊端就是服务器不能关机,关机后需要重启穿透服务。废话不多说直接开整。

本原文博客链接使用ssh远程连接在家的主机

1.配置穿透隧道

  • 注册和下载

注册NATAPP账号(为什么用NATAPP?因为他是免费的hhh),注册完之后回到首页,选择适合服务器系统的客户端进行下载,将客户端程序拷贝到服务器你想要保存的路径。

  • 开通隧道

在隧道开通前要进行实名验证。完成实名验证之后我们点击左上角购买通道,选择免费的这个

20230724024159.png?origin_url=file%3A%2F%2FD%3A%5Ccode%5Cmyblog%5Cxiaoyanfufu.gitee.io%5Csource%5C_posts%5C%25E4%25BD%25BF%25E7%2594%25A8SSH%25E4%25BC%2598%25E9%259B%2585%25E8%25BF%259E%25E6%258E%25A5%25E5%259C%25A8%25E5%25AE%25B6%25E9%2587%258C%25E7%259A%2584%25E4%25B8%25BB%25E6%259C%25BA%5Cimage-20240305162950375.png%3FlastModify%3D1709628308&pos_id=ckVEu5EU

隧道协议选择TCP,本地的端口选择22(也就是你的服务器开放SSH服务的端口,与config文件保持一致),点击购买即可。

20230724024159.png?origin_url=file%3A%2F%2FD%3A%5Ccode%5Cmyblog%5Cxiaoyanfufu.gitee.io%5Csource%5C_posts%5C%25E4%25BD%25BF%25E7%2594%25A8SSH%25E4%25BC%2598%25E9%259B%2585%25E8%25BF%259E%25E6%258E%25A5%25E5%259C%25A8%25E5%25AE%25B6%25E9%2587%258C%25E7%259A%2584%25E4%25B8%25BB%25E6%259C%25BA%5Cimage-20240305163226622.png%3FlastModify%3D1709628308&pos_id=NH7ejMnH

之后可以看到自己刚才买的隧道,我们需要的是隧道token,复制他!!!

20230724024159.png?origin_url=file%3A%2F%2FD%3A%5Ccode%5Cmyblog%5Cxiaoyanfufu.gitee.io%5Csource%5C_posts%5C%25E4%25BD%25BF%25E7%2594%25A8SSH%25E4%25BC%2598%25E9%259B%2585%25E8%25BF%259E%25E6%258E%25A5%25E5%259C%25A8%25E5%25AE%25B6%25E9%2587%258C%25E7%259A%2584%25E4%25B8%25BB%25E6%259C%25BA%5Cimage-20240305163457041.png%3FlastModify%3D1709628308&pos_id=pgndr25C

2.开启内网穿透

首先进入刚才存放NATAPP程序的路径,运行以下命令(xxx替换为authtoken)

  • 运行命令:

    ./natapp -authtoken=xxx
  • 后台运行命令:

    nohup ./natapp -authtoken=xxx -log=stdout &
  • 检查服务是否在运行命令:

    ps -ef|grep natapp

运行成功得到以下界面

20230724024159.png?origin_url=file%3A%2F%2FD%3A%5Ccode%5Cmyblog%5Cxiaoyanfufu.gitee.io%5Csource%5C_posts%5C%25E4%25BD%25BF%25E7%2594%25A8SSH%25E4%25BC%2598%25E9%259B%2585%25E8%25BF%259E%25E6%258E%25A5%25E5%259C%25A8%25E5%25AE%25B6%25E9%2587%258C%25E7%259A%2584%25E4%25B8%25BB%25E6%259C%25BA%5Cimage-20240305164244035.png%3FlastModify%3D1709628308&pos_id=PmbVMtmV

记下这个域名和后面的端口,复制下来~

  • 测试连接

打开客户端的SSH工具,IP输入刚才内网穿透得到的域名,port输入刚才得到的端口,点击连接...

进来啦!!!放一首好运来~

到此内网穿透进行远程SSH连接到此结束~

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!