如何批准特定计算机ssh到禁用密码身份validation的计算机?
help.ubuntu.com/community/SSH/OpenSSH/Configuring中的说明建议禁用密码validation,以便“只能从您经过特别批准的计算机进行连接”。 但他们没有说明如何专门批准计算机。 我怎么做?
在您希望有权访问服务器的每个用户上,在终端中运行:
ssh-keygen ssh-copy-id @
它会问你在哪里保存它,默认就好了。 它会要求您输入密码。 这是为了加密密钥,以防计算机被盗或受到损害。 如果您不想使用密码短语,则会将两个密码短语提示留空。
第一个命令为运行它的用户创建一个ssh密钥。 第二个命令ssh进入服务器并将当前用户的密钥添加到服务器允许登录的人员列表中。 由于ssh-copy-id使用ssh,因此在禁用密码登录之前需要执行此操作。
SSH密钥是两个匹配的一半。 一半告诉大家,另一半是保密的。 使用数学算法,公共一半可用于解密用私钥加密的数据。 如果数据使用公钥成功解密,您毫无疑问地知道它是加密它的密钥的私有部分。 因此,当您使用ssh密钥登录时,客户端会发送一条消息(使用私钥加密),该消息基本上是“让我进去”。 服务器使用公钥进行检查,如果公钥在允许的计算机列表中,则登录成功。
ssh-copy-id是(使用ssh)将公共一半复制到允许登录的密钥的服务器列表中(该列表存储在/home/cat /media/USB/stick/path/to/id_rsa.pub >>/home/
等命令来完成此操作。)
iptables的
如果计算机具有某个ip-range,则可以使用iptables来控制访问。 Iptables是内核的一部分。 您可以在/etc/iptables
文件中控制它们
# from /etc/iptables *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT # # loopback device # -A RH-Firewall-1-INPUT -i lo -j ACCEPT # # all connections already established (started outgoing from my machine) # -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # # but SSH - restricted # -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 --source 138.232.0.0/255.255.0.0 -j ACCEPT # # block all others (without answering - thus nobody is able to scan the network) # -A INPUT -p icmp --icmp-type echo-request -j DROP -A RH-Firewall-1-INPUT -j DROP COMMIT
有趣的是这一行:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 --source 111.111.0.0/255.255.0.0 -j ACCEPT
Prot 22是默认的ssh端口。 如果它与您的机器不同,请更改它。 111.111.0.0/255.255.0.0 -j ACCEPT
表示它接受来自’111.111.foo.bar’的所有连接,其中’foo’和’bar’为任意3位数。