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

如何使用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连接到此结束~

内网穿透,你可以使用工具如ngrok或frp来实现。这些工具可以将你的本地服务器暴露在公共网络上,使其可以通过互联网访问。以下是使用ngrok进行内网穿透的步骤: 1. 首先,你需要在你的本地机器上安装ngrok。你可以从ngrok的官方网站下载适用于你的操作系统的安装包。 2. 安装完成后,你需要创建一个ngrok账户。在ngrok的官方网站上注册并登录。 3. 接下来,在命令行中运行ngrok,并指定要转发的本地端口。例如,如果你的本地服务器在localhost的8080端口上运行,你可以使用以下命令:`ngrok http 8080` 4. ngrok会生成一个随机的公共URL,你可以通过这个URL访问你的本地服务器。 请注意,使用ngrok进行内网穿透可能会涉及到一些安全风险,因为你的本地服务器将直接暴露在公共网络上。因此,在使用之前,请确保你已经采取了适当的安全措施来保护你的服务器和数据。 对于VS Code远程连接Windows服务器,你可以使用VS Code的远程开发扩展。以下是一些基本步骤: 1. 在Windows服务器上安装并配置VS Code。 2. 在VS Code中安装“Remote - SSH”扩展。 3. 在VS Code的侧边栏中,点击“远程资源管理器”图标。 4. 在弹出的菜单中,选择“连接主机...”。 5. 在弹出的输入框中,输入你的服务器SSH连接信息,如用户名和IP地址。 6. 连接成功后,你将能够在VS Code中浏览和编辑服务器上的文件,并执行命令。 请确保你在Windows服务器上已经启用了SSH,并且你的网络连接稳定。此外,还要注意保护你的服务器连接的安全性,如使用安全的SSH密钥进行认证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值