ssh远程外网访问Ubuntu电脑(连接无线路由下的服务器) |
您所在的位置:网站首页 › 统一网站不同wifi不能登录吗 › 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 sshsshd 说明启动了 ssh server, ssh-agent 说明启动了 ssh-agent, ![]() 未启动可以通过一下命令启动 启动方法1启动方法2sudo /etc/init.d/ssh startsudo service ssh start 1.2配置 client 端Ubuntu 已经默认有 openssh-client, 即可通过ssh 尝试连接 在client端terminal输入: ssh -p 端口号 用户名@服务器ip 例: ssh -p 2222 [email protected] 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 [email protected]:~/.ssh/ww ~/.ssh/注意是在client端的terminal, 并且如果需要明确端口号的话, 可以通过scp -P 端口号 [email protected]:~/.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 端口 [email protected]在确保可以连接成功时,可以选择是否通过更改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此时 连接时,应改为 public ip, 65.154.122.154 端口赢改为路由的暴露端口7272 在client 端 输入命令 ssh -p 7272 [email protected]即可控制相应的内网192.168.66.1 端口号为4444的 Ubuntu server. 希望对你有所帮助,欢迎点赞 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |