Linux sftp 免密登录freeSSHd并下载文件

概述
Sftp 客户端登录服务器包含两种方式:

  • 口令方式,就是常用的账号+密码方式
  • 密匙对方式:需要server 上部署Public Key ,client上部署Privatekey,只要Public Key和Private key匹配成功,就可以建立会话。

本文就是基于秘钥对的方式实现Linux sftp客户端免密登录sftp 服务器freeSSHd 并下载文件

开发环境

  • Linux 开发板
  • Win10 笔记本电脑

准备阶段
配置网络

  • Linux 开发板 IP : 192.168.1.106
  • Win10 笔记本电脑 IP:192.168.1.170

    保证Win10 电脑和 Linux 可以相互ping通

具体步骤

  1. Linux开发板生成公钥和私钥,ssh-keygen 一路回车,最后会在/.ssh 下面生成 id.rsa (私钥) +
    id.rsa.pub(公钥)

    将公钥文件id_rsa.pub更名为xut ,当然你可以改成其他名字,但是要保证和后面sftp用户名保持一致。把这个xut文件保存好,后面还要把他放到sftp server的公钥文件夹里面

win10上搭建sftp服务器,下载freeSSHd并安装

配置freeSSHd,创建用户xut 并选择秘钥认证

java SFTP 本地密钥 java sftp免密登录_linux


输入win10电脑的IP地址192.168.1.170 并设置端口号22

java SFTP 本地密钥 java sftp免密登录_linux_02


配置Authentication: 禁止密码认证,允许秘钥认证。把之前产生的系统公钥文件xut放置到这个目录下面:

java SFTP 本地密钥 java sftp免密登录_java SFTP 本地密钥_03


配置SFTP: 设置sftp服务器下载路径,也就是说你要从服务器的这个位置下载文件

java SFTP 本地密钥 java sftp免密登录_linux_04


开始sftp 服务器,注意要以管理员方式运行,否则连接不上

java SFTP 本地密钥 java sftp免密登录_java SFTP 本地密钥_05

开始验证。

在Linux开发板上登录sftp 服务器freeSSHd, sftp xut@192.168.1.170,就可以进入到sftp服务器根目录

java SFTP 本地密钥 java sftp免密登录_java SFTP 本地密钥_06


下面我们在linux 开发板上免密下载text.txt 这个文件到Linux开发板的/home目录下

java SFTP 本地密钥 java sftp免密登录_ssh_07


切换到/home目录,该文件已下载下来,而且下载过程无需输入密码