Java Apache sshd隧道
我想创建java应用程序,这将是我的自定义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
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上宣布开放端口