在Windows上设置SFTP服务器
SFTP服务器允许我们通过SSH文件传输协议(一种安全的网络协议)来访问其文件和内容。在我们的操作系统环境中,我们可以设置SFTP服务器,使我们能够检索和发送资源。
本文将讨论使用WinSCP软件在Windows上设置SFTP服务器。
为老式Windows设置SFTP服务器
要在Windows上设置SFTP服务器,你需要安装OpenSSH,你可以从PowerShell GitHub下载。你可以查看这个用于Linux环境的安装指南。
你可以下载msi
或zip
文件,但我们在本文中只使用msi
文件。
-
安装
msi
文件。之后,进入Services
,并检查OpenSSH server
和OpenSSH Authentication Agent
的状态。 -
如果
Status
和Startup Type
不是running
和Automatic
,右键点击这两个服务,选择Properties
。 -
将
Startup type
改为Automatic
,点击Start
,并选择OK
。 -
对
OpenSSH Authentication Agent
做同样的操作;现在,两个服务应该是Running
和Automatic
。
为较新的Windows设置SFTP服务器
-
对于较新的Windows,你可以到
Settings > Apps > Optional Features
,获得OpenSSH。 -
选择
View Features
并在Add an optional feature
对话框中搜索OpenSSH server
。 -
选择
OpenSSH server
复选框选项,然后点击Install
。 -
之后,使用下面的PowerShell命令配置SSH服务器,允许进入服务器的连接。
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -Program "C:\Windows\System32\OpenSSH\sshd.exe"
-
配置之后,让我们启动
OpenSSH server
服务。要设置,你需要在搜索栏内搜索Services
。 -
在Windows服务的列表中找到
OpenSSH server
。 -
右键单击该服务,并选择
Properties
。 -
将
Startup type
改为Automatic
,点击Start
,并选择OK
。 -
对
OpenSSH Authentication Agent
做同样的操作;现在,两个服务都应该是Running
和Automatic
。
使用WinSCP来设置和配置SFTP客户端
WinSCP是一个仅限GPL-3.0的软件,可以免费使用和修改。它允许我们进行不同协议的安全文件传输,包括SSH文件传输和Amazon S3。
它只适用于Windows,可以从其下载页面下载。
-
下载后,运行安装程序文件,并选择首选的
Install Mode
。 -
接受许可协议,并选择
Typical Installion
选项。 -
选择你喜欢的用户界面风格,但在本文中我们将使用
Commander
。 -
之后,点击
Install
,启动WinSCP
应用程序。 -
启动后,你应该看到一个类似于下面的屏幕。
-
填入主机名;使用
localhost
。使用默认的端口号22
,并填写你的计算机的名称和密码。之后,点击Login
按钮。 -
将出现下面的屏幕对话框,你必须选择
Yes
。 -
如果成功,你应该看到下面的屏幕。
-
如果不成功,你可能会看到下面这样的对话框,因为你的
OpenSSH
服务没有运行,你需要启动前面所说的两个OpenSSH
服务。 -
现在,我们可以使用
ssh-keygen
命令设置基于公钥的认证。ssh-keygen
该命令的输出如下。
Generating public/private rsa key pair. Enter file in which to save the key (C:Usersakinl/.ssh/id_rsa): Created directory 'C:Usersakinl/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:Usersakinl/.ssh/id_rsa. Your public key has been saved in C:Usersakinl/.ssh/id_rsa.pub. The key fingerprint is: SHA256:Ryrpy5HHTT1NK2OFzT3NjoIwORbzNV7/BfBfPLhHCEk akinl@Olorunfemi-PC The key's randomart image is: +---[RSA 3072]----+ | o .E=.o | | = +.Bo*.| | * o oo*+O| | o * o +o=*| | o S + B.+.+| | . + + . =. | | + o . | | . + | | o | +----[SHA256]-----+
当
ssh-keygen
工具要求输入口令时,你可以输入一个口令,但我们在本文中不使用口令。ssh-keygen
创建了一个名为.ssh
的隐藏目录,并将密钥对保存在id_rsa.pub
文件中的.ssh
。公钥的完整路径是
C:Usersakinl/.ssh/id_rsa.pub
。公钥是
id_rsa.pub
文件,而私钥是id_rsa
。 -
为了将私钥和公钥连接到WinSCP上,我们需要在
.ssh
文件夹中创建一个名为authorized_keys
的文件。将公钥内容,id_rsa.pub
,复制到authorized_keys
文件中,并保存修改;你可以使用像记事本这样的文本编辑器。 -
在你的
.ssh
目录中至少应该有三个文件(authorized_keys
,id_rsa
, 和id_rsa.pub
) 。 -
为了保证
authorized_keys
文件的安全,并且只有管理员或核心用户才能访问,你必须配置Access Control List (ACL)
。使用下面的命令来配置访问控制。icacls.exe "C:Users<username>.sshauthorized_keys" /inheritance:r /grant "Adminstrators:F" /grant "SYSTEM:F"
-
将
<username>
改为你的用户名。icacls.exe "C:Usersakinl.sshauthorized_keys" /inheritance:r /grant "Adminstrators:F" /grant "SYSTEM:F"
该命令的输出:
processed file: C:Usersakinl.sshauthorized_keys Successfully processed 1 file; Failed processing 0 files
-
因此,如果你现在打开同一个
authorized_keys
文件,你应该看到下面的对话框。 -
为了完全配置SFTP服务器,我们需要编辑
sshd_config
文件来设置基于公钥的认证;sshd_config
文件在ProgramData
目录中。将下面的完整路径复制到Windows Explorer中,并打开sshd_config
文件C:ProgramDatassh
sshd_config
文件是该目录内的最后一个文件。 -
通过取消注释或改变你的
sshd_config
文件中包含配置信息的行来进行修改。同时,将sshd_config
文件作为Administrator
。PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no PermitEmptyPasswords no Subsystem sftp internal-sftp Match User <username> X11Forwarding no AllowTcpForwarding no PermitTTY no ForceCommand internal-sftp PasswordAuthentication no
此外,确保将
<username>
改为你的用户名。此外,你可以对文件内的以下配置信息进行注释。Match Group administrators AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
-
对你的
ssh_config
文件的修改应该如下图所示: -
现在,让我们用以前的用户名和密码登录方法打开WinSCP。
它不再被支持了,因为我们已经改变了配置文件,只支持公钥认证。现在要登录,我们需要使用我们的公钥。
-
不要使用
Password
,而是点击Advanced
按钮。 -
转到
SSH
下的Authentication
标签。 -
在
Authentication parameters
区域下,浏览私钥文件,进入.ssh
目录(C:Usersakinl.ssh
),并将文件选项改为All Files
-
选择
id_rsa
文件,应该会提示下面的对话框。请选择OK
。之后,应该会出现下面的对话框。
-
然后,点击
OK
。 -
现在,点击
Login
。现在,你可以使用公钥认证来访问SFTP服务器了。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。