赞
踩
在学 ssh
,学了通过 ssh
远程连接服务器,免密登录。自己额外尝试的时候,顺便再往外拓展了一点点。之后就可以实现在服务器上配置环境,其他电脑就不需要配置环境,远程连接到服务器上就可以开始办公。而不需要每台电脑都需要配置环境,而且需要一样的环境,从而尽可能减轻配置环境对工作的影响。也可以实现在家远程访问公司的服务器,远程办公。
预期结果:
计算机若干,云服务器适量(樱花穿刺也行,在研究),装上一个虚拟机。
需要充当服务器也就是需要让别人访问的机器,需要装上 OpenSSH 服务器的服务。
这东西用来让别人可以连接到这台电脑上
Win + S
打开搜索框,输入 添加可选功能
,打开ssh 服务器
,客户端应该默认已经安装了OpenSSH
相关的两个服务启动,并将启动项改成自动。powershell
终端,检查两个服务是否有工作。
注意是
\huge\color{orange}{注意是}
注意是
p
o
w
e
r
s
h
e
l
l
\huge\color{red}{powershell}
powershell
不是
c
m
d
终端
\huge\color{orange}{不是 cmd 终端}
不是cmd终端ssh -V
netstat -an | findstr :22
注意:
\huge\color{red}{注意:}
注意:这里有的人在运行第二个命令的时候会出错,那是相应的工具没有装上,自己百度搜一下 netstat
相应的工具。
效果是可以充当一个服务器让其他终端访问
sudo apt-get install openssh-server
ssh
是否在工作sudo ps -e | grep ssh
22
号端口:修改 /etc/ssh/ssh_config
文件里第 40
行左右,将 Port 22
这句取消注释sudo vim /etc/ssh/ssh_config
sudo service ssh restart
一般来说,打开之后都是没有行号的,所以可以在一般命令模式下 :set nu
以显示行号,或者在一般命令模式下输入 40G
直接跳到第 40 行。
由于我没有两台电脑,所以使用虚拟机来模拟。虚拟机的网络适配器选择 nat,那么实机就和虚拟机都处在同一个局域网内。虚拟机的系统是
Ubuntu20
。
ifconfig
查看虚拟机的ip地址
ipconfig
命令查看对应虚拟网卡的 ip 地址。
虚拟机作为服务器需要先开启22端口且开启了SSH服务器的服务。详细看第 1 点。
# user:用户名称, address:服务器ip地址
ssh user@address
~/.ssh/known_hosts
准备工作同样,需要先开启Windows下的SSH服务器。
# 登录账号:自己登录的账号名称,如果是微软账号登录,为了防止@出错,账号记得用""括起来。
ssh 登录账号@ip地址
PIN
C:\Users\hasee\.ssh
通常来说,使用到远程访问的两台机器,一般都不会在同一个局域网下。由于IPV4地址资源的问题,我们的机器所在的网络位置都是某一个公网 ip 下的内网中,而我们访问互联网都是需要拥有公网 ip,所以访问互联网都是需要经过我们上一级那一个拥有公网 ip 的路由器。但是反过来的话,也就是公网上的一台机器想要访问到内网中的一台机器,是不能实现的,因为内网的机器所拥有的 ip 地址是通过上一级路由器管理的,也就是对外隐藏。
我们不妨称我们可以操作的机器为 本机
,需要远程连接到的机器为 内网服务器
。远程连接其实就是本机访问内网服务器,媒介就是互联网。而本机是可是通过路由访问到公网,但是我们是无法得知内网服务器的地址,因为内网服务器同样通过路由才能访问公网,内网服务器是没有公网 ip 的,所以本机无法直接访问到内网服务器。
既然内网服务器没有公网 ip 导致无法直接访问,那我们专为内网服务器安排一台有公网 ip 的服务器,本机访问这台 中转服务器
的时候,中转服务器就将这个请求转发给内网服务器。那么就有另一个问题,内网服务器没有公网 ip,中转服务器同样不可达。所以我们还需要借助一个工具 frp
,在内网服务器和中转服务器之间架一座桥。
把 frp
工具下载到本地,配置好后再上传到对应的机器。
frp
工具
Linux x64
版本的 frp
工具tar -zxvf ./frp*.tar.gz
在 内网服务器 和 中转服务器 这个网络中,中转服务器 相当与服务器端,所以只需要用到 frps*
这3个文件。
frps.ini
文件frps
这个启动器赋予 执行权限chmod +x frps
解压 Windows 对应的 frp 压缩包
配置 frpc.ini
文件
中转服务器打开 转发端口
启动 frpc
注意:一定要先把服务器端打开,然后打开客户端
\color{red}{注意:一定要先把服务器端打开,然后打开客户端}
注意:一定要先把服务器端打开,然后打开客户端
ssh user@中转服务器公网ip -p 指定端口
经过上面的步骤,虽说可以实现了远程登录,但是每次登录都需要我们手动开启,也就是手动运行两个 frp 工具,很不方便,所以给配一个自启动。
/lib/systemd/system/frps.service
,将以下内容添加进去[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=root #只有root用户可以启动
Restart=on-failure
RestartSec=5s
ExecStart=/root/frps/frps -c /root/frps/frps.ini #frps启动命令,记得要>把文件夹放到对应的路径,还有改名字
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
systemctl
命令,使 frps
服务后台运行systemctl daemon-reload #重新加载服务配置
systemctl enable frps #设置下次开机时,自启后面的服务,相对的,disable 为取消自启
systemctl start frps #立即启动后面的服务,相对的,stop为立即停止
systemctl status frps #列出 后面 服务的状态,会列出很多信息
# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps
systemctl
,执行以下命令安装:yum install systemd #我是CentOS,命令是yum
frpc
目录中新建 autostart.bat
脚本文件@echo off
if not defined TAG (
set TAG=1
start wt -p "cmd" %0
exit
)
:home
frpc -c frpc.ini
goto home
上半部分是为了让运行
bat
文件时能在 Windows Terminal 而不是命令提示符中打开;下半部分其实只是手动开启 frpc 的代码,goto home
是为了让出现异常崩溃后能重新启动 frpc。如果崩溃后只需要退出,那么可以将最后三行改为:
frpc -i frpc.ini
exit
autostart.bat
的快捷方式。C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
,将快捷⽅式粘贴到进去autostart.bat
即可。Windows 找不到文件 'wt'
。这是 Windows 下没有 Terminal 终端
,去微软商店搜索下载。这样做的结果是,在任何地方,后面的别名都会被翻译成前面的ip地址
C:\Windows\System32\drivers\etc\hosts
下添加内容:120.xxx.xxx.xxx CentOS
root
账户,然后在 /etc/hosts
下添加同样的内容sudo su
vim /etc/hosts
这个操作给予
SSH
客户端的一个参数配置方案,在文件内指定好 ip、用户、端口,再将这些东西绑定到一个别名上,所以远程连接的命令变为ssh 别名
推荐使用这种方法 \huge\color{red}{推荐使用这种方法} 推荐使用这种方法
~/.ssh/
文件夹中新建一个文件 config
Host mywindows
HostName 120.xxx.xxx.xx
User hasee
Port 3434
ip 映射之后,我们登录的时候依然需要输入密码,那我们再来配置一下免密登录。大致的原理是利用 SSH 生成的公钥,传到 内网服务器,相当于在 内网服务器 添加了一个白名单。
内网服务器
下的 C:\ProgramData\ssh\sshd_config
,确保以下三行没有被注释:PubkeyAuthentication yes #允许远程使用公钥登录
AuthorizedKeysFile .ssh/authorized_keys #公钥的文件
PasswordAuthentication no #允许远程使用密码登录
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
SSH
服务:Restart-Service sshd
,如果失败在手动在 “计算机管理” > “服务” 中重启 OpenSSH SSHServer
本机
生成密钥ssh-keygen
如上,框内的就是免密登录所用到的 公钥
,隔壁那个是私钥,不要给其他人看。
本机
将公钥上传到 内网服务器
:ssh-copy-id myserver1 #myserver1 是前面 SSH 配置好的参数
别急,上网查了一下,这是 Windows 的 bug,手动将公钥复制到 内网服务器 就可以了。
本机
上复制公钥vim ~/.ssh/id_rsa.pub
C:\Users\hasee\.ssh
目录下的 authorized_keys
文件里,没有这个文件就新建一个。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。