我正在使用 apache mina sshd 来生成 ssh 服务器,以便用户能够远程访问特定系统。
这是我的代码的一部分:
SshServer sshd = SshServer.setUpDefaultServer();
sshd.setPort(830);
sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider("hostkey.ser"));
sshd.setShellFactory(new ProcessShellFactory(new String[] { "/bin/sh", "-i", "-l" }));
sshd.setCommandFactory(new ScpCommandFactory());
sshd.setPasswordAuthenticator(new PasswordAuthenticator() {
public boolean authenticate(String username, String password, ServerSession session) {
return true;
// just to make sure everything is right
// this will implement later
}
});
sshd.start();
在 Windows 上运行此代码时,此代码看起来不错,但在 linux(Ubuntu 18.04)上,出现此错误:
Exception in thread "main" java.net.SocketException: Permission denied
at java.base/sun.nio.ch.Net.bind0(Native Method)
at java.base/sun.nio.ch.Net.bind(Net.java:455)
at java.base/sun.nio.ch.Net.bind(Net.java:447)
at java.base/sun.nio.ch.AsynchronousServerSocketChannelImpl.bind(AsynchronousServerSocketChannelImpl.java:164)
at org.apache.sshd.common.io.nio2.Nio2Acceptor.bind(Nio2Acceptor.java:59)
at org.apache.sshd.SshServer.start(SshServer.java:318)
我知道使用 1024 以上的端口号运行程序可能会解决这个问题,但我正在开发的应用程序的标准端口是 830。我该如何解决这个问题?它需要在我的防火墙或超级用户设置中进行任何配置吗?