如何修复 ubuntu 上的 java.net.SocketException:权限被拒绝

Maj*_*aei 5 java linux permissions ubuntu apache-sshd

我正在使用 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();
Run Code Online (Sandbox Code Playgroud)

在 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)
Run Code Online (Sandbox Code Playgroud)

我知道使用高于 1024 的端口号运行程序可能会解决此问题,但我正在开发的应用程序类型的标准端口是 830。我该如何解决此问题?是否需要在我的防火墙或超级用户设置中进行任何配置?