如何使用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),注册完之后回到首页,选择适合服务器系统的客户端进行下载,将客户端程序拷贝到服务器你想要保存的路径。
开通隧道
在隧道开通前要进行实名验证。完成实名验证之后我们点击左上角购买通道,选择免费的这个
隧道协议选择TCP
,本地的端口选择22
(也就是你的服务器开放SSH服务的端口,与config文件保持一致),点击购买即可。
之后可以看到自己刚才买的隧道,我们需要的是隧道token,复制他!!!
2.开启内网穿透
首先进入刚才存放NATAPP程序的路径,运行以下命令(xxx替换为authtoken)
运行命令:
./natapp -authtoken=xxx
后台运行命令:
nohup ./natapp -authtoken=xxx -log=stdout &
检查服务是否在运行命令:
ps -ef|grep natapp
运行成功得到以下界面
记下这个域名和后面的端口,复制下来~
测试连接
打开客户端的SSH工具,IP
输入刚才内网穿透得到的域名,port
输入刚才得到的端口,点击连接...
进来啦!!!放一首好运来~
到此内网穿透进行远程SSH连接到此结束~