SSH 默认端口未更改 (Ubuntu 22.10)

Sil*_*tly 21 server ssh 22.10

我使用的是 Ubuntu 22.10,无法更改 SSH 默认端口。我已经尝试过以下方法:

\n
    \n
  • 已编辑/etc/ssh/sshd_config,保留默认行,但在其下方#Port 22添加。Port 1234

    \n
  • \n
  • 然后使用以下命令在 UFW 中添加允许规则:

    \n
    sudo ufw allow 1234\n
    Run Code Online (Sandbox Code Playgroud)\n

    其中补充道:

    \n
    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    行动
    1234允许任何地方
    1234(v6)允许任何地方 (v6)
    \n
  • \n
\n

然后我使用 2 种不同的方法重新启动 SSH 服务(请参阅下面的块开头),但我没有看到任何变化。服务状态表明它开始侦听端口 22,为了验证这一点,我检查了侦听端口,果然它仍然是 22。

\n
$ sudo systemctl restart ssh\n$ sudo service ssh restart\n$ systemctl status ssh\nssh.service - OpenBSD Secure Shell server\n Loaded: loaded (/lib/systemd/system/ssh.service; disabled; preset: enabled)\nDrop-In: /etc/systemd/system/ssh.service.d\n         \xe2\x94\x94\xe2\x94\x8000-socket.conf\n Active: active (running) since Mon 2022-11-07 10:12:52 AEDT; 5s ago\nTriggeredBy: \xe2\x97\x8f ssh.socket\n   Docs: man:sshd(8)\n         man:sshd_config(5)\nProcess: 54858 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)\nMain PID: 54859 (sshd)\n  Tasks: 1 (limit: 1020)\n Memory: 1.3M\n    CPU: 13ms\n CGroup: /system.slice/ssh.service\n         \xe2\x94\x94\xe2\x94\x8054859 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"\n\nNov 07 10:12:52 webserver.abc.com systemd[1]: Starting OpenBSD Secure Shell server...\nNov 07 10:12:52 webserver.abc.com sshd[54859]: Server listening on :: port 22.\nNov 07 10:12:52 webserver.abc.com systemd[1]: Started OpenBSD Secure Shell server.\n\nss -tlpn\n\nState         Recv-Q        Send-Q               Local Address:Port   Peer Address:Port Process\nLISTEN        0             4096                             *:22                *:*    -\n
Run Code Online (Sandbox Code Playgroud)\n

我是否错过了一个步骤或做错了什么?我确实注意到服务状态有preset: enabled,但我读过的多个指南都没有提到任何有关禁用预设之类的内容的内容。

\n

编辑:\n感谢 matigo 提醒我,但sshd.service似乎尚未安装。我有配置文件并且可以很好地进行远程连接,不确定我是否只是不明白并且我需要安装sshd它来接管默认的 SSH 操作?

\n

Sil*_*tly 33

SSHd 现在使用基于套接字的激活 Ubuntu 22.10 或更高版本。阅读有关此处讨论的此更改的更多信息。

TLDR:/etc/ssh/sshd_config未使用,现在我完整阅读了评论,我发现:

# 当 sshd 是套接字激活时,不使用端口和 ListenAddress 选项,
# 这是 Ubuntu 中的默认设置。
有关详细信息,请参阅 sshd_config(5) 和# /usr/share/doc/openssh-server/README.Debian.gz。

更改默认端口的选项:

  • 关闭此更改并恢复到此更新之前 SSHd 的工作方式(来自上面链接的讨论中的twinsen):

    • systemctl disable --now ssh.socket
    • systemctl enable --now ssh.service
    • 然后 /etc/ssh/sshd_config 再次使用端口和地址设置
  • 或者监听套接字流更新(来自上面链接的讨论中的saxl )

    1. mkdir -p /etc/systemd/system/ssh.socket.d
    2. cat >/etc/systemd/system/ssh.socket.d/listen.conf <<EOF
      [Socket]
      ListenStream=
      ListenStream=1234
      EOF
      
      Run Code Online (Sandbox Code Playgroud)
    3. sudo systemctl daemon-reload
    4. sudo systemctl restart ssh.socket

然后它应该声明它已开始侦听新端口: systemctl status ssh ...

11 月 7 日 14:42:37 webserver.abc.com sshd[58725]:服务器侦听 0.0.0.0 端口 1234。
11 月 7 日 14:42:37 webserver.abc.com sshd[58725]:服务器侦听 :: 端口 1234


小智 9

这就是我解决 Ubuntu 22.10 上的 OpenSSH 端口问题的方法。

重要 - 请在进行更改之前进行备份或快照。

使用nano编辑器并更改ListenStream参数的值

sudo nano /lib/systemd/system/ssh.socket
Run Code Online (Sandbox Code Playgroud)

将以下参数更改为您选择的端口,例如 44022

ListenStream=44022
Run Code Online (Sandbox Code Playgroud)

保存文件并退出 Nano 编辑器。

sudo systemctl daemon-reload<br>
sudo systemctl restart ssh<br>
sudo netstat -tulpn<br>
Run Code Online (Sandbox Code Playgroud)

现在您应该能够看到端口 44022 已打开。

不要忘记打开防火墙上的端口,例如 ufw。

sudo ufw allow 44022
Run Code Online (Sandbox Code Playgroud)

我建议您打开另一个 putty 会话以确保您能够登录。