这里说的SSH,全名叫做Security Shell,相信经常用Linux的同学不会陌生。SSH最常见的作用就是用来远程登录其他系统的命令行界面,当然主要还是给Linux用户使用的。但是其实现在Windows 10已经自带了OpenSSH功能,这样一来,我们就可以在Windows下安装和使用SSH的相关功能了。下面来看看怎么来安装吧。
查看系统版本
首先确定你的系统是否是Windows 10 1809或者更新的系统,如果不是的话,先更新系统,把系统更新到最新状态。
查看系统版本也十分简单,打开开始菜单,选择设置,然后选择系统->关于,即可在最下面找到系统版本号。
又或者,你喜欢命令行的话,也可以从powershell运行下面的命令来查看版本号。
(Get-ItemProperty "HKLM:/SOFTWARE/Microsoft/Windows NT/CurrentVersion").ReleaseId
安装OpenSSH
确定了版本号,下面就来安装OpenSSH。安装方式也很简单,还是从开始菜单进入Windows设置,这次选择应用->应用和功能->可选应用->添加功能进入。
然后找到OpenSSH服务端和客户端,安装这两项。
如果你喜欢简洁的命令行的话,同样简单,先运行下面的命令查看一下OpenSSH功能。
# 先查看一下软件Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'# 应该会展示以下输出,注意版本号将来可能会变,安装的时候注意Name : OpenSSH.Client~~~~0.0.1.0State : NotPresentName : OpenSSH.Server~~~~0.0.1.0State : NotPresent
然后安装它们即可。
# 安装客户端Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0# 安装服务端Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0# 它们的输出应该类似下面这样Path :Online : TrueRestartNeeded : False
结果和图形界面安装的完全相同。不管采用哪种方式,你现在都拥有了OpenSSH功能了。
启动SSH服务端
下面打开管理员权限的powershell窗口,这次输入下面的命令来查看刚刚安装的OpenSSH服务,下面的sshd就是OpenSSH的服务端了。
Get-Service *|where Name -Like '*ssh*'Status Name DisplayName------ ---- -----------Stopped ssh-agent OpenSSH Authentication AgentStopped sshd OpenSSH SSH Server
简单启动该服务即可。
Start-Service sshd
下面就可以用OpenSSH的客户端来连接了,直接在powershell窗口(无需管理员)中输入以下命令即可。这里需要提醒一下,如果你用的是微软账号(也就是微软邮箱)创建和登录用户的话,用户名会被截断为邮箱@符号前面的一部分,具体来说就是你用户文件夹的名字,这也是微软做的比较坑人的一点。
ssh 你的用户名@localhost
然后你应该就会看到命令提示符发生了变化,提示你现在已经进入到了SSH环境中。虽然这个环境还是你的本机。如果你在这个环境里运行命令,应该还会发现,这是一个cmd窗口,而不是powershell终端窗口。
使用SFTP替代FTP
好吧,到这里你可能会产生一个问题,虽然这样我们成功得到了在Windows上运行的OpenSSH服务端,但是它有什么用呢?这个问题问的很好,坦白来说,其实它确实没什么用,但是如果对比来说的话,却是FTP的完美替代产品。
FTP大家应该经常用的吧。我原来就非常喜欢在Windows上开一个IIS服务器,用它来创建FTP服务器来传输文件。相信很多人都会这样用的。但是FTP作为一个老协议,最大的问题就是没有加密,所有流量都是公开传输的,很容易被截获并读取。这时候最好用SFTP来替代,虽然它名字很接近,但是其实和FTP没有任何关系,因为SFTP是基于刚刚介绍的SSH协议的。
那么SFTP怎么用呢?其实很简单,我们刚刚搭建好的OpenSSH服务端自带SFTP支持,所以现在就已经搭建好了SFTP了。用法很简单,打开FileZilla或者WinSCP这样的FTP客户端软件,打开协议的下拉列表,就可以看到SFTP这个选项。只需要用鼠标轻轻一点这个选项,我们就获得了安全、加密、高效的传输协议!
另外,如果你是Linux用户,也不要再Linux上面安装vsftpd这类FTP服务端了,同样不安全,还多此一举。直接用你SSH登录Linux的用户名和密码,随便找一个FTP客户端软件(基本都支持SFTP协议),登录即可。