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

本文详细介绍了如何在Ubuntu20.04服务器上安装并启用SSH服务,生成并管理密钥对进行安全连接,以及如何通过内网配置和NATAPP实现外网穿透,以便远程访问服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

### 如何使用内网穿透技术实现远程连接服务器 #### 推荐工具:FRP 和 Cpolar 为了实现在外部网络环境下访问位于内部网络中的服务器,可以采用 FRP 或者 Cpolar 这样的内网穿透工具。 #### 安装与配置 FRP 实现内网穿透 对于 FRP 的部署,通常分为服务端(Server)和客户端(Client)。服务端应放置于具有公网 IP 地址的机器上运行;而客户端则需安装在目标内网主机之上。完成软件下载之后,依据官方文档指导进行必要的参数设定,特别是 `server_addr` 及 `local_ip` 字段,前者指向外网可触及的服务端地址,后者则是本地待映射的服务实例所在位置[^2]。 ```bash # 配置文件示例 frps.ini (Service Side) [common] bind_port = 7000 # 配置文件示例 frpc.ini (Client Side) [common] server_addr = x.x.x.x # 替换为实际公网上可用的服务端IP server_port = 7000 # 对应上面绑定的端口号 [ssh] type = tcp local_ip = 127.0.0.1 # 内网中要暴露出去的服务的真实ip local_port = 22 # 被转发的具体应用监听的端口,此处以SSH为例 remote_port = 6000 # 外部请求进来时的目标端口 ``` 启动命令如下: ```bash ./frps -c ./frps.ini # 启动服务端程序 ./frpc -c ./frpc.ini # 启动客户端程序 ``` 此时,在外界可通过 `<Public_IP>:<Remote_Port>` 访问到受保护下的资源,如上述例子所示即可以通过 `x.x.x.x:6000` 来建立 SSH 连接至内网内的 Ubuntu 主机。 #### 利用 Cpolar 构建稳定的远程开发环境 除了 FRP 之外,Cpolar 提供了一种更为简便的方式来进行类似的设置过程。其优势在于提供了图形化界面以及更友好的用户体验。按照提供的指南依次执行 Linux 上 cpolar 的安装、创建用于 SSH 远程登录的公网 URL 并将其固定下来以便日后重复利用,最后验证所构建链接的有效性即可达成目的[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值