windows通过ssh连接到Linux主机
windows 通过ssh连接到Linux主机
⽂章⽬录
1.ssh的认识
SSH 为建⽴在应⽤层基础上的安全协议。SSH 是⽬前较可靠,专为远程登录会话和其他⽹络服务提供安全性的协议。
传统的⽹络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在⽹络上⽤明⽂传送⼝令和数据,别有⽤⼼的⼈⾮常容易就可以截获这些⼝令和数据。这些服务程序很容易受到“中间⼈”这种⽅式的攻击。就是“中间⼈”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间⼈”⼀转⼿做了⼿脚之后,就会出现很严重的问题。通过使⽤SSH,你可以把所有传输的数据进⾏加密,这样"中间⼈"这种攻击⽅式就不可能实现了。
使⽤SSH,还有⼀个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。
2.ssh的安全验证
从客户端来看,SSH提供两种级别的安全验证。
第⼀种级别(基于⼝令的安全验证)
只要你知道⾃⼰帐号和⼝令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间⼈”这种⽅式的攻击。
第⼆种级别(基于密匙的安全验证)
ssh工具windows
需要依靠密匙,也就是你必须为⾃⼰创建⼀对密匙,并把公⽤密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求⽤你的密匙进⾏安全验证。服务器收到请求之后,先在该服务器上你的主⽬录下寻你的公⽤密匙,然后把它和你发送过来的公⽤密匙进⾏⽐较。如果两个密匙⼀致,服务器就⽤公⽤密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以⽤你的私⼈密匙解密再把它发送给服务器。
⽤这种⽅式,你必须知道⾃⼰密匙的⼝令。但是,与第⼀种级别相⽐,第⼆种级别不需要在⽹络上传送⼝令。
第⼆种级别不仅加密所有传送的数据,⽽且“中间⼈”这种攻击⽅式也是不可能的(因为他没有你的私⼈
密匙)。但是整个登录的过程可能需要10秒
3.连接⽅法
(1)远程主机收到⽤户的登录请求,把⾃⼰的公钥发给⽤户。
(2)⽤户使⽤这个公钥,将登录密码加密后,发送回来。
(3)远程主机⽤⾃⼰的私钥,解密登录密码,如果密码正确,就同意⽤户登录。那么也就是每次我们都要输⼊命令,ssh⽤公钥加密它,然后服务器会⽤密钥解密,得到⼝令,判断是否和服务器上存储的密码⼀致。——这也叫密钥登陆,
为了避免每次都输出⼝令的⿇烦,诞⽣了公钥加密⽅法-----也就是我们在⼀些git上看到的ssh连接⽅法:⽤户将⾃⼰的公钥储存在远程主机上。登录的时候,远程主机会向⽤户发送⼀段随机字符串,⽤户⽤⾃⼰的私钥加密后,再发回来。远程主机⽤事先储存的公钥进⾏解密,如果成功,就证明⽤户是可信的,直接允许登录shell,不再要求密码。这种⽅法要求⽤户必须提供⾃⼰的公钥
4.windows 通过ssh连接到Linux主机
⾸先在Linux主机上打开中断,输⼊ssh,看是否有如下的界⾯
如果没有的话sudo apt-install openssh-server进⾏安装。
在终端输⼊ifconfig,记住这个【inet】开头的服务器ip地址,记住这个@前⾯的名字,例如这⾥的optimization。此外要知道服务器的ip,⽤户名以及密码就可以了。
之后在windows上右键Git Bash Here,输⼊【ssh +服务器⽤户名@服务器ip】,回车后输⼊这个yes。在password后⾯输⼊【服务器⽤户名密码】,然后就会看到连接成功了,输⼊【ls】,就可以列出服务器上的⽂件了的。
此时发现⽤户名已经改变,这样就可以操作Linux主机了。
如果要断开连接输⼊exit即可断开连接。有时会出现下⾯的情况,从⽽⽆法断开连接
查问题:
这个提⽰表⽰服务器有程序被停⽌[注意,不是终⽌],需要你重新启动或者完全终⽌这个程序才可以。
查看被停⽌的程序命令:
输⼊ jobs
系统显⽰: [1]+ Stopped bin/hive
输⼊ jobs -l
输⼊ jobs -l
系统显⽰:[1]+ 5510 Stopped bin/hive
原来,我开始编辑⽂本,习惯性按ctrl z停⽌它了。
解决问题:
根据个⼈情况,
a.如果重新启动使⽤下⾯命令:
fg %1
其中%1表⽰第⼀个被停⽌的程序,就是中括号中的数字;
b.如果要彻底结束程序,使⽤下⾯命令:
kill %1
这⾥的%1同fg命令⼀样,输⼊后,会有提⽰
这样,再次⽤logout、exit就可以退出了