全新 Ubuntu 安装:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal
ssh.service
由于端口 22 已被使用,无法启动:
$ sudo service ssh status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2021-02-04 14:10:27 CST; 11min ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 2041 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Process: 2042 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=255/EXCEPTION)
Main PID: 2042 (code=exited, status=255/EXCEPTION)
Feb 04 14:10:27 ubu20a systemd[1]: Starting OpenBSD Secure Shell server...
Feb 04 14:10:27 ubu20a sshd[2042]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Feb 04 14:10:27 ubu20a sshd[2042]: error: Bind to port 22 on :: failed: Address already in use.
Feb 04 14:10:27 ubu20a sshd[2042]: fatal: Cannot bind any address.
Feb 04 14:10:27 ubu20a systemd[1]: ssh.service: Main process exited, code=exited, status=255/EXCEPTION
Feb 04 14:10:27 ubu20a systemd[1]: ssh.service: Failed with result 'exit-code'.
Feb 04 14:10:27 ubu20a systemd[1]: Failed to start OpenBSD Secure Shell server.
我看到在端口 22 上监听的唯一内容是1/init
:
$ sudo netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 101 34051 556/systemd-resolve
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 0 37066 745/cupsd
tcp6 0 0 :::22 :::* LISTEN 0 34718 1/init
udp 0 0 0.0.0.0:5353 0.0.0.0:* 115 37068 743/avahi-daemon: r
udp 0 0 0.0.0.0:52172 0.0.0.0:* 115 37070 743/avahi-daemon: r
udp 0 0 127.0.0.53:53 0.0.0.0:* 101 34047 556/systemd-resolve
udp 0 0 0.0.0.0:631 0.0.0.0:* 0 39715 822/cups-browsed
udp6 0 0 :::5353 :::* 115 37069 743/avahi-daemon: r
udp6 0 0 :::39012 :::* 115 37071 743/avahi-daemon: r
当我能在备用端口(例如端口 2020)上启动ssh.service
我想了解并修复(如果可能)端口 22 的当前问题。
笔记:
- Linux 系统管理员不是我的强项,所以如果我忽略了一些非常明显的问题...请直接向对方反映
- 如果答案是,那么请提供
RTFM
链接FMTR
- 我浏览了前十几个建议的“重复”问题,但没有找到任何与这个问题相关的内容
答案1
评论有点长...
我采纳了@steeldriver 的建议并运行了建议的systemctl
调用:
$ systemctl -all list-sockets
LISTEN UNITS ACTIVATES
... snip ...
/run/udev/control systemd-udevd-control.socket systemd-udevd.service
/run/uuidd/request uuidd.socket uuidd.service
[::]:22 tinysshd.socket [email protected]
audit 1 systemd-journald-audit.socket systemd-journald.service
kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
有趣的是从底部往上第三行...称为tinysshd
监听端口 22 的内容。
我找不到任何关于什么的解释tinysshd
(即,似乎不是系统所需的服务)所以我删除了tinysshd
(sudo apt remove tinysshd
)并且能够成功启动该ssh
服务:
$ sudo service ssh status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-02-04 15:14:34 CST; 3s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 3887 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 3888 (sshd)
Tasks: 1 (limit: 7032)
Memory: 1.3M
CGroup: /system.slice/ssh.service
└─3888 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
Feb 04 15:14:34 ubu20a systemd[1]: Starting OpenBSD Secure Shell server...
Feb 04 15:14:34 ubu20a sshd[3888]: Server listening on 0.0.0.0 port 22.
Feb 04 15:14:34 ubu20a sshd[3888]: Server listening on :: port 22.
Feb 04 15:14:34 ubu20a systemd[1]: Started OpenBSD Secure Shell server.
我还可以看到sshd
在端口 22 上的监听:
$ sudo netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
...snip ...
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 66119 3888/sshd: /usr/sbi
tcp6 0 0 :::22 :::* LISTEN 0 66121 3888/sshd: /usr/sbi
... snip ...
答案2
尝试通过此命令识别哪个应用程序分配端口:
sudo lsof -i -P -n | grep LISTEN
并设计下一步做什么
答案3
另一个想法是,我遇到了同样的问题。当我在路由器上启用 ssh 时,它会自动使用端口 22 来 ssh 到路由器,而且这是不可更改的。我一直无法让 ssh 到计算机工作,直到我意识到创建一个端口触发器,这样另一个端口(例如 2222)就转到该计算机的本地 22,然后我就有了 ssh。
答案4
我正在使用 WSL2 和 Ubuntu 20.04。
我在 kbulgrien 找到了答案Unix StackExchange 是我的问题:它systemd-user-sessions.service
没有被自动调用。我想到让它自动运行的唯一方法是添加以下行
ExecStartPost=systemctl start systemd-user-sessions.service
在[Service]
部分/lib/systemd/system/ssh.service
。但我还没有找到一种允许 SSH 服务器自动启动的方法…… :( 我仍然必须通过以下方式手动启动它sudo systemctl start sshd.service