???????当想要用一台电脑远程连接另一台linux主机电脑时,可能会遇到不少问题,可分为局域网远程连接和非局域网远程连接。当让主机A远程连接主机B时,可以将主机A看为客户端,主机B看为服务器。我们需要对主机B进行一些允许远程连接的配置。
1.局域网远程连接
???????主机A与主机B在同一个局域网下:主机A和主机B都所属同一个路由器下的子主机,共用一个局域网,例如两台主机都连接上了同一个wifi,两者的IP均是网络服务提供商分配局域网IP,并非公网IP,远程连接比较容易。由于主机B被远程连接,视作服务器,因此我们对主机B进行配置:
- 安装ssh远程连接工具:
sudo apt install openssh-server
- 开启ssh服务:
sudo service ssh start
或者
sudo service ssh restart
- 关闭ssh服务:
sudo service ssh stop
- 设置ssh服务开机则启动:
sudo systemctl enable ssh
- 查看ssh服务的状态,要保证ssh服务为active活跃状态,可用步骤2启用服务:
sudo systemctl status sshd
- 修改ssh的配置文件sshd_config,路径默认为/etc/ssh/sshd_config:
sudo vim /etc/ssh/sshd_config
找到“port“,“ListenAddress”,“PermitRootLogin”,去掉注释,改为: 表示监听22号端口,监听所有地址,允许远程登陆。
- 开启防火墙:
sudo ufw enable
- ssh远程连接末默认使用的是22号端口,要让防火墙允许ssh服务通过防火墙:
sudo ufw allow ssh
sudo ufw allow 22/tcp
- 修改后重启ssh服务后,使其配置文件生效:
sudo systemctl restart ssh
- 之后最好重新修改一下root用户的密码,之前没有修改,就一直连接不上,修改后反而链接上了:
sudo passwd root
-
准备远程连接,用ifconfig查询主机B的IP地址,下图中192.168.3.219则为主机B的IP地址: -
主机A可以使用ssh命令远程连接主机B了:
ssh root@192.168.3.219
2.非局域网远程连接
???????当主机A(客户端)和主机B(服务器)不在同一个局域网,例如一个主机在学校,一个主机在家里,若需要进行远程连接,则需要进行启用反向代理工具进行内网穿透。其本质上是是使主机B服务器与公网代理之间建立一个管道通信。请先完成1.局域网远程连接配置,再进行此章节。
- 安装openssh-client:
sudo apt-get install openssh-client
- 生成密钥,可以直接回车使用默认保存路径(/home/“用户”/.ssh),输入管理密码:
ssh-keygen
私钥默认保存在/home/“用户”/.ssh/id_rsa 公钥默认保存在/home/“用户”/.ssh/id_rsa.pub 由于.ssh目录是隐藏目录,需要用 ls -a来显示,然后进入目录
ls -a
将公钥给服务器认证列表并设置权限:
cp .ssh/id_rsa .ssh/authorized_keys
sudo chmod 700 .ssh
sudo chmod 600 ~/.ssh/authorized_keys
- 修改ssh配置文件sshd_config,寻找RSAAuthentication和PubbkeyAuthentication字段,若没有则在文件最后添加上如下:
- 重启ssh服务:
sudo systemctl restart sshd
- 安装ngrok反向代理,进入官网下载(https://ngrok.com/download),执行官网的命令进行解压安装:
- 注册ngrok账户并且登陆,会给你一个token ,在电脑上进行添加:
- 开启ngrok服务:
ngrok tcp 22
要一直保持该进程不会关闭才能进行远程连接,出现如下即可:
- 开始远程连接,-p的后面为上一步中出现的ngrok代理的端口:
ssh root@0.tcp.ngrok.io -p*****
|