摘要:我试图弄清楚为什么我的 tmux 会话在我与 ssh 断开连接时会死掉
详情:
我在 Arch Linux 系统上安装了 tmux。当我开始一个 tmux 会话时,我可以从它分离,然后在 ssh 会话处于活动状态时再次附加。但是如果我结束我的 ssh 会话,那么 tmux 会话就会被杀死。
我知道这不是正常行为,因为我有其他系统,即使 ssh 会话结束,tmux 会话也会继续运行,并且我可以在建立新的 ssh 连接后附加到 tmux 会话。有问题的系统和正常工作的系统具有非常相似的配置,所以我不确定要检查什么。
我正在运行 tmux 1.9a 版。有问题的系统(我有 root 访问权限)的 Linux 内核版本为 3.17.4-1,而正常工作的系统的内核版本为 3.16.4-1-ARCH(我没有 root 权限)系统)。我怀疑内核版本是问题的根源,但这只是我注意到的一个差异。
我想我会问是否有人见过类似的问题并知道可能的解决方案。
导致问题的确切步骤是:
tmux以启动 tmuxctrl-B D 分离(此时我可以重新连接 tmux attachtmux attach,我收到消息no sessions并运行tmux ls返回failed to connect to server: Connection refused …编辑
此处暴露的问题已解决(关于文件
.ssh夹的文件模式。但另一个问题仍然存在,所以我创建了一个新问题:>无法使用 SSH-RSA 密钥登录
我无法再连接特定用户的 ssh-rsa 密钥,但它仍然适用于其他用户。
该git定义如下用户:
# cat /etc/passwd | grep git
git:x:1002:1002:,,,:/var/git:/bin/bash
Run Code Online (Sandbox Code Playgroud)
所以你注意到这是 git 用户,因此它的家是/var/git,它不在/home.
现在,ssh 总是提示我输入密码:
$ ssh git@srv
git@srv's password:
Run Code Online (Sandbox Code Playgroud)
我检查了日志:
# tail -n 1 /var/log/auth.log
[...] Authentication refused: bad ownership or modes for file /var/git/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
因此authorized_keys,某些所有权或模式配置错误。我不明白,因为这里是这个文件的 conf :
# ls -l /var/git/.ssh/ | grep auth
-rw-rw-r-- 1 git git 394 mai 22 17:39 authorized_keys
Run Code Online (Sandbox Code Playgroud)
这是(以防……)父.ssh目录:
# ls -al /var/git/ | …Run Code Online (Sandbox Code Playgroud) 远程机器 10.10.10.1 具有名为“user”的用户的密码“asdFGH12”。即使我在“asdFGH12”字符串后输入密码“asdFGH12dasdkjlkjasdus”或任何其他字符,我也可以登录。
$ ssh -v 10.10.10.1
OpenSSH_5.2p1 FreeBSD-20090522, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to 10.10.10.1 [10.10.10.1] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/identity type 0
debug1: identity file /home/user/.ssh/id_rsa type -1
debug1: identity file /home/user/.ssh/id_dsa type 2
debug1: Remote protocol version 1.99, remote software version OpenSSH_4.1
debug1: match: OpenSSH_4.1 pat OpenSSH_4*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.2p1 FreeBSD-20090522
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received …Run Code Online (Sandbox Code Playgroud) 我问这个问题是因为,虽然互联网上有很多答案表明这who -a是一个选项,但没有人解释如何阅读输出。如果您可以提供一个指向解释这一点的在线网站的链接,那同样是一个很棒的答案。这是我想破译的一个例子:
[bo@hostname ~]$ who -a
Jun 17 03:47 590 id=si term=0 exit=0
system boot Jun 17 03:47
run-level 3 Jun 17 03:47 last=S
Jun 17 03:48 4424 id=l3 term=0 exit=0
LOGIN tty1 Jun 17 03:48 5503 id=1
LOGIN tty2 Jun 17 03:48 5504 id=2
LOGIN tty3 Jun 17 03:48 5505 id=3
LOGIN tty4 Jun 17 03:48 5506 id=4
LOGIN tty5 Jun 17 03:48 5507 id=5
LOGIN tty6 Jun 17 03:48 5508 id=6
pts/0 Oct 19 16:27 15250 …Run Code Online (Sandbox Code Playgroud) 我使用 systemctl disable ssh 禁用 ssh 服务器,然后重新启动。重启后,我仍然可以通过ssh登录远程服务器。我使用 systemctl status ssh 检查服务器状态,它处于非活动状态。
$ systemctl -a | grep ssh
ssh.service loaded inactive dead OpenBSD Secure Shell server
ssh@3-192.168.0.120:22-192.168.0.104:31079.service loaded active running OpenBSD Secure Shell server per-connection daemon (192.168.0.104:31079)
system-ssh.slice loaded active active system-ssh.slice
ssh.socket loaded active listening OpenBSD Secure Shell server socket
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试设置 SSH 服务器,以便仅允许使用 SSH 密钥从网络外部访问它,并且不允许访问 root 或任何其他用户名/密码组合。
同时,网络内部的内部用户,仍然需要能够连接到同一个系统,但期望使用用户名和密码以更传统的方式登录。
外部和内部用户将使用 PuttySSH 从 Windows 访问系统,外部访问将通过端口转发防火墙进入系统,该防火墙将在某些任意选择的高编号端口(如 55000(或管理员决定什么)
下图试图更好地显示交通流。
我知道如何将实际登录设置为仅使用密钥,并且我知道如何拒绝 root,我不知道如何将两种登录类型分开。
我曾考虑在同一 IP 上的不同端口上运行两个 SSHD 副本,并为每个端口设置两种不同的配置。
我还考虑过设置“匹配”规则,但我不确定是否可以使用这些选项隔离服务器范围的配置。
最后,登录的外部人员将始终是同一用户,出于这个问题的目的,我们称他们为“弗兰克”,因此“弗兰克”将只被允许从外部 IP 登录,而实际上永远不会坐在前面任何内部连接的系统,因为系统的每个其他用户只会在内部连接,而永远不会从外部 IP 连接。
他连接的 Franks IP 是动态分配的,但他连接的公共 IP 也是静态的,永远不会改变,端口转发器的内部 IP 也不会改变,SSH 服务器的内部 IP 地址也不会改变.
内部客户端将始终从私有网络范围内的 IP 连接,该 IP 是内部 SSH 服务器 IP 的一部分,并且是 16 位掩码 EG:192.168.0.0/16
是否可以使用一个配置文件和一个 SSH 服务器实例进行设置?如果是这样,我该怎么做?
或者
使用具有不同配置的 2 个正在运行的服务器会更好吗?
参考 SSH 服务器在 Ubuntu 18.04 上运行。
我正在尝试通过 SSH 连接到装有 Debian 的远程 VPS。在调试模式下运行 sshd,我发现:
Authentication refused: bad ownership or modes for directory /root
Run Code Online (Sandbox Code Playgroud)
我尝试设置权限,就像我在谷歌中找到的那样:
chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
但它仍然拒绝使用 pubkey 进行身份验证并要求输入密码,并在调试中显示相同的消息。我究竟做错了什么?
在 中/etc/ssh/sshd_config,PAM 在 Debian 10 上默认启用:
UsePAM yes
Run Code Online (Sandbox Code Playgroud)
在我不想允许使用密码或 kerberos 登录,而只想允许 SSH 密钥身份验证的情况下,PAM在 sshd 中启用它还有什么优势吗?UsePAM或者,如果设置为“否” ,它会简化流程并可能使其更安全吗?
在 sshd 中禁用 PAM 会产生什么实际影响?我会注意到有什么不同吗?
SSHD 配置中有一个 Match 组:
cat /etc/ssh/sshd_config
...
Match Group FOOGROUP
ForceCommand /bin/customshell
...
Run Code Online (Sandbox Code Playgroud)
机器上有许多用户在“FOOGROUP”中。
我的问题:如何从“匹配组”中排除“FOOGROUP”中的给定用户?
Match Group GROUPNAME, User *,!root
Run Code Online (Sandbox Code Playgroud)
Match Group GROUPNAME User !root
Run Code Online (Sandbox Code Playgroud)
我的问题: SSHD_CONFIG 中的#1 和#2 有什么区别?