我正在构建 Raspberry Pi 网络ADS-B接收器。几个节点放置在不同的位置:家、小屋、父母,也许还有更多……它们都被设置为打电话回家到一个亚马逊-EC2使用反向 ssh 隧道。
我真正想要实现的是区分哪个节点是哪个节点以及用于 SSH 到该节点的本地端口的某种方式。
由于sudo netstat -tlpe --numeric-ports | grep sshd
显示哪些用户正在运行该进程,我正在考虑为每个隧道分配一个用户。我只想限制 SSH 反向隧道的用户。最好我想将所有节点(多个)密钥保留在同一个文件中,并为所有其他用户authorized_keys
保留。StrictModes yes
我最终运行了这些命令:
sudo groupadd sshtungrp
sudo useradd sshtunnel -m -d /home/sshtunnel -s /bin/true -g sshtungrp
while read p; do sudo useradd $p -M -d /home/sshtunnel -s /bin/true -g sshtungrp; done < users.txt;
sudo -u sshtunnel mkdir /home/sshtunnel/.ssh
sudo -u sshtunnel vim /home/sshtunnel/.ssh/authorized_keys
sudo -u sshtunnel chmod 750 /home/sshtunnel
sudo -u sshtunnel chmod 750 /home/sshtunnel/.ssh
sudo -u sshtunnel chmod 640 /home/sshtunnel/.ssh/authorized_keys
我/etc/ssh/sshd_config
添加了:
Match Group *,!sshtungrp
StrictModes yes
我收到错误消息Directive 'StrictModes' is not allowed within a Match block
。我如何克服这个问题,或者最终实现我的目标,即了解哪个节点是哪个节点以及用于 SSH 到该节点的本地端口?
答案1
您希望通过为不同的连接源提供不同的用户来区分它们。在这些不同的用户之间共享authorized_keys
文件是没有意义的,因为任何密钥都将允许登录到任何帐户。 (它会工作,但帐户分离不会带来任何安全优势。)
因此,authorized_keys
每个用户都有一个属于 root 的文件。每个authorized_keys
文件仅授权与该帐户对应的密钥。创建多个密钥很便宜,没有理由不这样做。你不需要关闭StrictModes
。您可以AuthorizedKeysFile
在每个用户的块中使用该指令Match
,或者使用一个包含由用户名替换的AuthorizedKeysFile
指令。%u
隧道用户创建:
sudo groupadd sshtungrp
sudo mkdir /etc/ssh/tunnelkeys # or wherever you want to keep them
# Add users without /home
while read p; do sudo useradd $p -r -s /bin/true -g sshtungrp; done < users.txt;
# Copy key file with: sudo vim /etc/ssh/tunnelkeys/%u
sshd_配置:
Match Group sshtungrp
AuthorizedKeysFile /etc/ssh/tunnelkeys/%u