假设情况是:我们需要远程ssh访问我的linux工作站,但是接的是scunet的校园网内网,如果在同一个局域网内是非常简单的,在不同局域网内用windows、linux穿linux工作站的方法稍有不同,具体解决办法如下:
1.生成密钥对:
(1)在终端运行
ssh-keygen
生成默认的RSA密钥。通过ssh-keygen -t可以自定义5中密钥类型,通过man ssh-keygen
查看。
(2)输入保存路径,不修改则为默认。
(3)输入管理密码,最好不要为空。
成功后会出现:
Your identification has saved in *** 这是私钥保存的位置(默认是:/home/zzq/.ssh/id_rsa)
Your public key has saved in *** 这是公钥保存的位置(默认是:/home/zzq/.ssh/id_rsa.pub)
2.复制公钥内容给服务器认证列表:
(1)创建.ssh/authorized_keys:
touch .ssh/authorized_keys // 创建文件
chmod 700 .ssh //设置权限
chmod 600/644 .ssh/authorized_keys //设置权限
(2)复制id_ras.pub的内容给authorized_keys中保存
(3)确认/etc/ssh/sshd_config中记录的认证列表的目录:
(4)如果后面连接成功了还会出现known_hosts文件,记录远程连接的主机
3.同一局域网下远程连接Linux服务器:
如果是在同一个局域网内就很简单了,直接输入:
ssh zzq(your uesr name)@host IP -p 22(default:22) -i ~/.ssh/id_rsa
host IP可以在Ubuntu下的connection Information中查看。
端口号默认是22,在sshd_config中也可以修改为其他端口号。
4.不同一局域网下远程连接Linux服务器:
(1)我记得Ubuntu是默认安装openssh-client的,openssh-server需要自行安装,此链接非常详细:
https://help.ubuntu/lts/serverguide/openssh-server.html
也可通过以下语句,对两台机器都安装并打开openssh服务:
sudo apt-get install openssh-client
sudo apt-get install openssh-server
sudo /etc/init.d/ssh start //重启服务
(2)无论是用windows穿还是linux穿都需要在本Linux服务器下下载一个ngrok,它是一个可以穿透内网的软件,下载地址为:https://ngrok/
按照ngrok网站上的步骤下载、安装、运行即可,我输的:./ngrok tcp 22
使用的默认的端口22,出现:
(我也不知道为啥手机找出来这么糊,可能是要罢工了吧。。。并且此窗口在使用期间需要一直保持)
这个时候通过ngrok的虚拟的主机地址就是:0.tcp.ngrok.io,端口号就是图中冒号后面我涂黑了的地方。
(3)使用这个穿透后的主机地址和端口来连接Linux服务器:
Linux穿Linux:
在保证openssh开启情况下,在另一台linux机器中输入:
ssh zzq(your host name)@0.tcp.ngrok.io -p*****(ngrok port number)
输入第一步设置的密码即可。
Window穿Linux:
可在windows下安装Putty:http://www.putty/
安装完毕后在界面中输入主机名称和端口:
再输入需要远程控制的Linux服务器的主机名字和密码:
What's more:
如果不是校园网而是自己的路由器什么的,也可以对自己路由器进行设置得到自己的外网端口号,具体操作可以参看另一篇博客:https://blog.csdn/MONKEY3233/article/details/80240673
另外我还可看到很多用反向SSH来建一个外网可访问的桥梁,这个没有具体研究,先放这里,需要或者感兴趣的可以参考:
https://blog.mythsman/2017/01/14/1/
http://www.nat123/Pages_23_616.jsp
具体SSH原理是什么可以参考:
https://www.jianshu/p/59c4fc2684be
更多推荐
SSH远程控制(1)——内网穿透:linux穿linux、windows穿linux
发布评论