SSH远程连接原理(怎样在linux系统和windows系统互传文件)(有多处引用别人的博客,侵权删)

您所在的位置:网站首页 远程装系统原理 SSH远程连接原理(怎样在linux系统和windows系统互传文件)(有多处引用别人的博客,侵权删)

SSH远程连接原理(怎样在linux系统和windows系统互传文件)(有多处引用别人的博客,侵权删)

2024-02-02 18:38| 来源: 网络整理| 查看: 265

1. SSH远程连接的原理

SSH远程连接中,SSH2协议分为3个协议:传输层协议,认证协议,连接协议,而SSH1中由单个协议提供密钥交换,身份认证,加密的功能。传输层协议主要提供密钥交换与服务端认证的功能,认证协议是提供客户端认证功能,客户端认证主要有基于口令认证和密钥认证,连接协议主要是提供远程执行命令功能。而在此我们主要讨论SSH远程连接的原理,也就是客户端认证的两种方式:

工作流程如下:(此处的公钥密钥为一对,公钥加密只能由相应私钥进行解密)

⑴服务器端开启ssh服务,在端口22监听客户端请求

方式一①用户名密码验证方式(口令认证)

⑵客户端发出ssh请求,服务器把自己的rsa key公钥发送给用户

 

而此rsa key会被记录到服务器端的~/.ssh/known_hosts中,下次远程登录服务器就不会出现以上的提示信息 

⑶用户根据服务器发来的公钥对密码进行加密

⑷加密后的信息传回到服务器,服务器用自己的私钥解密,若密码正确,则用户登录成功。

           

②基于密钥的登陆方式(公钥加密)

⑴首先在客户端生成一对密钥(ssh-keygen)ssh-keygen -t (指定生成密钥类型,rsa,dsa,ecdsa等)    id_rsa文件:保存密钥  id_rsa.pub:保存公钥

⑵将客户端的公钥ssh-copy-id拷贝到服务端

在服务器端查看是否拷贝成功

⑶当客户端再次发送一次连接请求,包括ip,用户名

⑷服务端接收到客户端的请求后,在authorized_keys(已授权的客户端公钥)中寻找,如果有响应的ip和用户名就生成一串随机的字符串,例如:qwer

⑸服务端使用客户端拷贝过来的公钥对其进行加密并发送给客户端

⑹得到客户端发送过来的信息后,客户端使用私钥进行解密,然后将解密后的字符串发送给服务端

⑺服务端得到客户端发送过来的字符串后,跟之前的字符串进行对比,如果一致就允许免密码登录

测试:

2. 用xshel连接ubuntu系统的步骤,以及遇到问题的解决方法

故障:ssh服务由于是自己自学并且安装,所以对它完全是一个从无到有的认识,所以最初不知道它是一个需要提前安装的服务,只是在网上搜索了SSH远程连接的原理,知道了客户端和服务器的一个密码交换过程,所以通过在网上不断收集资料的过程,ssh连接的过程逐渐清晰,在安装包,建立连接,登录用户,传送文件的各个过程中都遇到了各种各样的麻烦

解决方法:就是坚决不放弃,互联网上什么资料都有,前人学习的宝贵经验财富可一一搜寻理解,最终能够摸索出一套可行的方案出来

Step1:使用apt-get安装SSH服务

①用dpkg-l | grep -i  “ssh”  查看ssh服务的安装信息,从图中可以看到已经有客户端和服务器两个文件。(

障碍:之前的操作步骤找不到了,该图其实为安装好ssh之后的安装信息查看,在安装好之前其实只有前三项,所以是不齐全的,

解决方案:使用之前学过的apt-get install命令成功安装ssh服务)

 

②安装 openssh-server(

障碍:知道使用ssh,必须要先安装好它,但是由于对ssh了解欠缺,所以不知道应该使用apt-get install命令安装什么,所以上网各处搜寻,

解决方案:终于在中国大学mooc的一堂课中有提到安装openssh-server这个服务)

 

Step2:启动和停止SSH服务

①/etc/init.d/ssh start(stop/restart) 可以控制ssh服务的启动停止和重启(

障碍:刚安装好ssh服务我还以为可以直接打开xshell5进行连接,结果打开xshell之后也是一头雾水,建立连接里面不知道写什么,更不用说连接这回事了。

解决方案:

以上命令可以实现ssh服务的三个操作,其实只需要用start打开就可以,但是为了多体验ssh的操作,我找到了其他两个操作,stop和restart)

 

②netstat -a | grep ssh 命令查看进程,看端口是否在监听(

障碍:user用户钥匙在监听中/run/user/1000/keyring/ssh,没有看到root用户

解决方案:之后避免使用root用户)

 

Step3:设置SSH的配置文件sshd_config(

障碍:在sshd_config文件中可以看到authentication下有一个Permitrootlogin之前显示的是without-password,允许root用户登录但是不能使用密码登陆

解决方法:改为yes)

 

 

Step4:使用xshell连接到ubuntu系统

①用ifconfig ens33 192.168.1.100命令修改ens33的地址为192.168.1.100(

障碍:之前在网上搜查的资料没有这一步,它们是直接写的127.0.0.1,然后在xshell中直接设置进行连接,最后是能够连接建立但是不会弹出用户登录窗口,

解决方法:另寻它路,在别人的博客里面看到可以通过ifconfig设置ens33的内部地址,在xshell中用该地址进行连接)

 

②将虚拟机的网络连接模式改为NAT模式(我选择用NAT模式连接)

 

③在虚拟网络编辑器添加一个VMnet8(NAT模式对应VMnet8),设置子网IP为192.168.1.0

 

④NAT设置内容如下

 

⑤在Xshell 5中选择SSH协议,主机地址设为192.168.1.100(之前设置的ens33的地址)默认端口22号

 

⑥点击确认后出现下列窗口

 

⑦点击确认后出现下列登陆窗口(输入用户名和密码)(

障碍:初见该登陆框的时候,我第一个想到的是用root用户名,密码就为linux下用户的密码登陆,结果显示拒绝密码,后来我换成了普通user用户,用户密码依然还是之前的那个,但是最后还是拒绝我的密码输入。

解决方法:在网上搜索为什么shell登录用户拒绝登录密码,然后在嵌入式爱好者网站中看到所不能用root登陆,用普通用户进行登陆,所以我在ubuntu中把root用户用sudo 命令退回了普通用户,再在xshell中用普通用户进行登陆最终连接成功建立。)

 

 

⑧登陆成功后连接成功结果图如下

 

Step5:安装lrzsz包(

障碍:安装lrszs包的时候,不知怎么的没网了,连接不上网络,点不开网页,所以apt-get install命令没有用

解决方案:在网上找网络连接的设置,以太网连接设置,wifi连接设置,在windows的管理员命令中通过ipconfig all看到了以太网ipv4的地址和无线连接模式下的ipv4地址,把这两个配置好在电脑上,结果以太网连接上但是不能用,所以换成wifi连接模式,一直连接不上,索性将所有的设置改为桥接模式,一下子就联网了,使用apt-get install命令安装lrzsz)

 

Step6:rz命令将2016070525传到ubuntu系统,ubuntu系统内将上述文档重命名为自己名字拼音,sz命令传到windows系统中

(障碍:在安装好lrzsz之后,我在Ubuntu系统中输入rz命令,准备接受电脑桌面的文件,但是出现的是一串乱码,并且这串乱码的数字在慢慢地移动,但是始终不像网上那样会弹出窗口来。

解决方案:找了好几份别人通过lrzsz来传送和接受文件的实例,发现大家都是在xshell中输入sz和rz命令进行的文件下载和上传)

①将2016070525传到ubuntu系统

 

 

 

②重命名为qiuyanru.txt

 

③sz命令将 qiuyanru.txt文件传送到windows系统

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3