使用Apache mina sshd构建sftp server如何托管配置文件?

使用Apache mina sshd构建sftp server如何托管配置文件?,第1张

1 介绍

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

2 sftp搭建

21查看openssl的版本

ssh -V

###使用ssh –V命令来查看openssh的版本,版本必须大于48p1,低于这个版本需要升级。

22创建sftp组

groupadd sftp

23创建一个sftp用户,用户名为mysftp,密码为mysftp

useradd –g sftp –s /bin/false mysftp //该用户不能通过sshd登陆到系统

passwd mysftp

23sftp组的用户的home目录统一指定到 chaodiquancom /data/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/data/sftp/mysftp

mkdir -p /data/sftp/mysftp

usermod –d /data/sftp/mysftp mysftp

24配置sshd_config

文本编辑器打开 /etc/ssh/sshd_config

vi /etc/ssh/sshd_config

找到如下这行,用#符号注释掉。

# Subsystem sftp /usr/libexec/openssh/sftp-server

在文件最后面添加如下几行内容,然后保存。

Subsystem sftp internal-sftp

###配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。值是一个子系###统的名字和对应的命令行(含选项和参数)。比如"sftp /usr/libexec/openssh/sftp-server"。,###这里配置为内部的

Match Group sftp

#限定只有sftp组的才能访问

ChrootDirectory /data/sftp/%u

###设定属于用户组sftp的用户访问的根文件夹

ForceCommand internal-sftp

###强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录###shell执行(shell -c)。这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。###这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的。

AllowTcpForwarding no

###是否允许TCP转发,默认值为"yes", 禁止TCP转发并不能增强安全性,除非禁止了用户###对shell的访问,因为用户可以安装他们自己的转发器。

X11Forwarding no

###是否允许进行 X11

转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。

如果启用了 UseLogin ,那么X11转发将被自动禁止。

25设定Chroot目录权限

chown root:sftp /data/sftp/mysftp

chmod 755 /data/sftp/mysftp

26建立SFTP用户登入后可写入的目录

照上面设置后,在重启sshd服务后,用户mysftp已经可以登录。但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:

mkdir /data/sftp/mysftp/upload

chown mysftp:sftp /data/sftp/mysftp/upload

chmod 755 /data/sftp/mysftp/upload

27重启sshd服务

service sshd restart

KeepAliveMessageFactoryImpl方法中的isRequest、isResponse中返回的boolean值有关,调试一下,时间太长,记不太清楚了!把我的发给你研究一下吧!

/ 心跳包内容 /

private static final String HEARTBEATREQUEST = "HEARTBEATREQUEST";

private static final String HEARTBEATRESPONSE = "HEARTBEATRESPONSE";

@Override

public Object getRequest(IoSession session) {

loginfo("发送心跳包" + HEARTBEATREQUEST);

/ 返回预设语句 /

return HEARTBEATREQUEST;

}

@Override

public Object getResponse(IoSession session, Object message) {

loginfo("得到返回");

return null;

}

@Override

public boolean isRequest(IoSession session, Object message) {

loginfo("isRequest判断是否是心跳包: " + message);

if(messageequals(HEARTBEATREQUEST)) {

return true;

} else {

return false;

}

}

@Override

public boolean isResponse(IoSession session, Object message) {

loginfo("isResponse判断是否是心跳包: " + message);

if(messageequals(HEARTBEATRESPONSE)) {

return true;

} else {

return false;

}

}

put的时候要判断一下你要丢进去的数据是不是有问题,ServerSessiongetRemoteAddress()改写成ServerSessiongetRemoteAddress()==null0:ServerSessiongetRemoteAddress() 这样试试看客户不可以 当然后面的0你可以根据自己的情况去修改。

ConnectFuture future = connectorconnect(new InetSocketAddress(

host, port));// 创建连接

futureawaitUninterruptibly();// 等待连接创建完成

sessionwrite()函数,写入的是一个object对象,不能传输byte数组,所以你的传输过去的byte数组就不正确了 。。你应该用了mina提供的过滤器,所以客户端和服务器端才可以通讯,如果你不用过滤器,你用sessionwrite()函数将byte数组发送给服务器,服务器是接受不到消息的,也就是在serverHandler类中不会触发messageReceive函数。。mian是一个事件驱动模型的框架 。 。如果不用过滤器的话只能传输bytebuffer对象。想解决文件传输,你可以在客户端用输入流InputStream对象读取文件放入byte数组中,然后将byte数组转化成bytebuffer对象,注意这个bytebuffer对象应该是apache提供的 。然后在服务器端用bytebuffer对象接受后再转换成byte数组,这样文件就可以传输了 。 我也是刚刚研究mina。这个方法只是下下策。我想mina框架中有一个fillter可以传输文件的 。 你好好看看mina api吧。对了我研究的是mina17版本的。。。希望我的回答对你有所帮助。

jar包在服务器上是不可运行的!

在服务器上运行的是WEB程序是war包

jar包的安装使用一般在手机上!

其次!jar包 是放在WEB程序下面的webroot下面的lib中的 只不过是给别人调用的!jar包 也可以做为插件 共别人使用!

因为要下班了!所以暂时这么说吧!不知道LZ能接受不。。。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 使用Apache mina sshd构建sftp server如何托管配置文件?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情