在ubuntu中开启sftp服务,并在windows中通过winscp访问ubuntu中的文件
问题
如何在ubuntu中开启sftp服务,并在windows中通过winscp访问ubuntu上的文件?
或
win10如何访问wsl linux子系统中的文件?
前提
windows中已有密钥对。如没有请查找相关资料。
方案
1.在windows中安装winscp
2. 检查ubuntu中的相关服务
运行命令
dpkg --get-selections | grep openssh
如果结果中有openssh-client, openssh-server, openssh-sftp-server, 说明相关服务已安装,可直接跳到下一步。如果没有安装,则运行以下命令进行安装
sudo apt-get install openssh-client
sudo apt-get install openssh-server
3. 启动sftp server
运行以下命令启动服务
service ssh start
如果启动成功,直接跳到下一步。
如果未启动成功,且返回结果中有以下错误信息:
error: could not load host key /etc/ssh/ssh_host_rsa_key
解决方法如下:
运行ls -al /etc/ssh/ssh_*key查看该目录下是否包含错误提示中的文件,如果没有这些文件或者文件大小为0, 说明这些key初始化失败,请运行以下命令重新配置
sudo rm -r /etc/ssh/ssh*key
sudo dpkg-reconfigure openssh-server
service ssh start
4. 在ubuntu中添加可信任公钥
~/.ssh/authorized_keys查看ubuntu上是否有该文件,如果没有请创建该文件。(.ssh目录权限为700, authorized_keys文件权限为600.)
把windows公钥的内容复制到上述文件中。
5. 通过winscp访问ubuntu
打开winscp,配置如下:
File protocol: SFTP
Host name: 你服务器的地址. (如果是本机上的linux子系统,则为127.0.0.1)
Port number: 22
User name: 你在ubuntu系统中的用户名
Password: 留空
填写以上配置后,找到Advanced -> Authentication -> Private key file配置项,点击浏览(…)进入Select private key file窗口,找到C:\Users\你的windows用户名\.ssh目录,如果有ppk格式的密钥,选择即可。
如果没有ppk格式密钥,则在右下角文件过滤下拉框中找到All private Key Files选项, 然后选择你的密钥文件,一般为id_rsa, 选中后winscp会帮助你生成ppk格式的密钥。
保存设置,点击Login即可访问ubuntu中的文件。