Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache sshd隧道_Java_Apache_Sshd - Fatal编程技术网

Java Apache sshd隧道

Java Apache sshd隧道,java,apache,sshd,Java,Apache,Sshd,我想创建java应用程序,这将是我的自定义sshd服务器。 客户端应该能够创建到此服务器的隧道 现在我有一个工作示例: import org.apache.sshd.SshServer; 导入org.apache.sshd.common.ForwardingFilter; 导入org.apache.sshd.common.Session; 导入org.apache.sshd.common.SshdSocketAddress; 导入org.apache.sshd.server.PasswordAu

我想创建java应用程序,这将是我的自定义sshd服务器。 客户端应该能够创建到此服务器的隧道

现在我有一个工作示例:

import org.apache.sshd.SshServer;
导入org.apache.sshd.common.ForwardingFilter;
导入org.apache.sshd.common.Session;
导入org.apache.sshd.common.SshdSocketAddress;
导入org.apache.sshd.server.PasswordAuthenticator;
导入org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider;
导入org.apache.sshd.server.session.ServerSession;
导入java.io.IOException;
公开课考试{
公共静态void main(字符串[]args)引发IOException{
//创建默认服务器
SshServer server=SshServer.setUpDefaultServer();
server.setPasswordAuthenticator(新的PasswordAuthenticator(){
@凌驾
公共布尔身份验证(字符串用户名、字符串密码、服务器会话){
返回true;//对所有人进行身份验证
}
});
服务器设置端口(2222);
//允许转发
setTcpipForwardingFilter(新的ForwardingFilter(){
@凌驾
公共布尔canForwardAgent(会话){
返回true;
}
@凌驾
公共布尔canForwardX11(会话){
返回true;
}
@凌驾
公共布尔canListen(SshdSocketAddress地址,会话){
返回true;
}
@凌驾
公共布尔canConnect(SshdSocketAddress地址,会话){
返回true;
}
});
//随机主机密钥提供程序
setKeyPairProvider(新的SimpleGeneratorHostKeyProvider(“hostkey”);
server.start();//启动服务器
}
}
目前,我有最小的sshd服务器。运行时,可以建造隧道:

sshuser@host-p 2222-R端口:主机:端口-N

问题是,用户不能两次创建到同一端口的隧道。第一次连接成功,但在隧道断开和重新连接服务器后,该端口已在使用中

第二个问题是,通过外部IP连接不可用

例如,服务器是192.168.1.10。客户端构建到服务器的隧道并转发端口2020。 现在,
nmap-p2020localhost
将显示该端口已打开,但
nmap-p2020192.168.1.10
将显示该端口已关闭

我想问的是,如何强制sshd服务器重用以前使用过的封闭端口,以及如何使其在外部IP上宣布开放端口