ssh远程外网访问Ubuntu电脑(连接无线路由下的服务器)

自己的初衷视为了自己能在学校控制家里的Ubuntu电脑,但发现网上很少有真正介绍怎样从外网访问自己电脑的相关帖,因此本文主要为了不知道如何从外网控制服务器的朋友. 倘若要作为server的Ubuntu电脑未配置过,可以从 1.测试内网连接 部分看起


1. 测试内网连接

1.1配置 server端

在远程的Ubuntu电脑上安装ssh-server

sudo apt update
sudo apt install openssh-server

一旦安装完成,其实ssh服务就会自动启动,想要检测是否运行可以在terminal中输入
检测方法一:

sudo systemctl status ssh

则会显示 active (running)

检测方法 二:

ps -e | grep ssh

sshd 说明启动了 ssh server, ssh-agent 说明启动了 ssh-agent,

未启动可以通过一下命令启动

启动方法1启动方法2
sudo /etc/init.d/ssh startsudo service ssh start
1.2配置 client 端

Ubuntu 已经默认有 openssh-client, 即可通过ssh 尝试连接
在client端terminal输入:

ssh -p 端口号 用户名@服务器ip
例: ssh -p 2222 ww@192.168.66.1
1.3设置 秘钥 登录
秘钥生成

注:如果是在client端生成密钥对,则把client端的公钥拷贝到server端,如果是在server端生成密钥对,则把私钥拷贝到client端.
在server端terminal 生成密钥对ww 与ww.pub(名称任意,默认为id_rsa,id_rsa.pub)

ssh-keygen

当出现 ‘Enter file in which to save the key (/home/user/.ssh/id_rsa): ww’ 时,可以输入想要更改的秘钥名称ww即可

cd .ssh

将公钥内容存入authorized_keys文件中

cat ww.pub >> authorized_keys

把server端的 私钥ww 拷贝到client端:
client端的terminal输入:

scp user@192.168.66.1:~/.ssh/ww ~/.ssh/

注意是在client端的terminal, 并且如果需要明确端口号的话, 可以通过scp -P 端口号 user@192.168.66.1:~/.ssh/ww ~/.ssh/ 来完成

更改权限

更改server端文件权限

chmod 600 authorized_keys
chmod 700 ~/.ssh

更改client端文件权限

chmod 400 ~/.ssh/ww

当出现类似Permissions 0644 for ‘id_rsa’ are too open.
It is required that your private key files are NOT accessible by others 等错误时,就是有可能没有把私钥的权限改成只读, 就可以用chmod 400 ~/.ssh/私钥 来解决

秘钥配置

在server端更改配置文件:
打开编辑器:

sudo gedit /etc/ssh/sshd_config 或者 sudo vim /etc/ssh/sshd_config

去掉注释并更改:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

重启服务

service sshd restart
秘钥登录

在client 端登录时加载秘钥即可:

ssh -i  ~/.ssh/秘钥 -p 端口 user@192.168.66.1 

在确保可以连接成功时,可以选择是否通过更改server端的sshd_config 来关闭密码登录

PasswordAuthentication no

2. 测试外网连接

本人的Ubuntu系统"服务器"是一台家用电脑,用小米路由无线连接的,因此使用的方法是为了方便自己在学校使用学校电脑通过外网连接到家里路由,通过路由连接自己的家用电脑
如果不想通过路由器设置的同学可以参考此处连接:
点击: How to Set up SSH Tunneling (Port Forwarding)

2.1 设置ssh配置文件

在server端 更改sshd_config,

sudo vim /etc/ssh/sshd_config

去掉注释并更改:

GatewayPorts yes

2.2查看public ip
方法一方法二
在server端打开连接在terminal中输入
https://ifconfig.co/ipcurl ifconfig.me

得到 public ip: 65.154.122.154(例子)

2.3设置静态ip

打开路由器设置(192.168.31.1),查找路由器的连接设备,把家用电脑的ip改成静态ip,此处的ip依然是内网的ip,如 192.168.66.1,只不过改成了statistic
在这里插入图片描述

网上也有很多其他设置静态ip的方法,可以自行查找

2.4设置端口转发/映射

如果不想通过路由器设置,也可以通过terminal设定,详情查看: How to Set up SSH Tunneling (Port Forwarding)
设置映射的外部端口,如 7272, 内部端口应与sshd_config中的端口保持一致,如果在sshd_config中,port的端口为,内部ip地址应与Ubuntu电脑server的内网静态地址保持一直

port 4444

那么在设置时,端口转发的内部接口则应该设置为 4444
例:

名称协议外部端口内部IP地址内部端口
任意名如:wwTCP7272192.168.66.14444

在这里插入图片描述

2.4 连接

此时 连接时,应改为 public ip, 65.154.122.154 端口赢改为路由的暴露端口7272
在client 端 输入命令

ssh -p 7272 ww@65.154.122.154

即可控制相应的内网192.168.66.1 端口号为4444的 Ubuntu server.


希望对你有所帮助,欢迎点赞

  • 14
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值