安全性 – 设置SSH密钥以自动执行scp的正确方法

我想设置SSH密钥以自动执行scp作业.我目前的假设是“自动化”意味着没有密码的SSH密钥,但我对你的建议持开放态度.

在我问这个问题之前,我做了很多谷歌搜索.这是我发现的:

>许多页面解释了如何在没有密码的情况下配置SSH密钥
>很少有页面解释没有密码的SSH密钥的安全隐患

因此,这个问题是Jeff Atwood所说的“让互联网变得更美好”的主要候选人.

出于这个问题的目的,想象一下这个配置:

> Source 1(不受我控制):user1 @ host1
> Source 2(不受我控制):user2 @ host2
>来源X / Y / Z(不受我控制):等
>目的地(由我控制):user3 @ host3
>目标:设置“作业”(脚本,等等),使用scp将文件从user1 @ host1和user2 @ host2(等)复制到user3 @ host3

我已经知道了:

> ssh-keygen生成SSH密钥
> SSH密钥可以有空/无密码
>〜/ .ssh / id_dsa有私钥
>〜/ .ssh / id_dsa.pub有公钥
>将〜/ .ssh / id_dsa.pub复制到〜/ .ssh / authorized_keys并仔细设置其文件权限
>与其他用户/主机共享〜/ .ssh / id_dsa.pub的内容以与scp一起使用

在我自己在不同主机/用户之间的测试中,我知道我的设置有效.

让我感到困扰的是安全隐患.而且,我承认我不是Linux管理员,也不是安全专家.

>如果我将此公共SSH密钥提供给另一个部门以与scp一起使用,如果同一个密钥泄露/丢失/被盗到另一个部门怎么办?
>这是否暗示任何有权访问此公共SSH密钥的人都可以使用scp对host3作为user3而无需密码?

您的回复需要考虑的重要假设:

>我不关心通过更广泛的互联网的外部黑客.这些是安全公司网络上的Linux机器.
>我无法设置其他用户ID.

我猜有一种限制特定SSH密钥访问的方法,但我不知道如何.也许是〜/ .ssh / authorized_keys选项(我今天才知道)?是否可以拥有多个SSH密钥 – 为每个源提供不同的密钥?

请告诉正确的方法.

最佳答案
user3 @ host3可以拥有尽可能多的ssh公钥,因为他们希望授予对其帐户的访问权限.有些可以受密码保护,有些则没有.

每把钥匙都有公共和私人部分.密钥将由user1和user2生成,公共一半将被赋予user3.然后,User3可以将这些密钥添加到authorized_keys文件中.密钥是否受密码保护由私钥决定,而不是公钥.因此,如果user3给user3一个公钥,他们就无法判断它是否受密码保护,AFAIK.

您可以在单个计算机上的authorised_keys文件中执行一些限制,如’authorized_keys:restrict access access section’here中所述

比如说你想确保user1只能从你可以放入的host2连接host1和user2

from="host1" <user1 public key>
from="host2" <user2 public key>

然后,如果私钥被用户1或用户2泄露或被盗,则他们无法从任何其他计算机连接.

不知道这有多好,但可能值得你研究scponly,这看起来会阻止对你只想拥有scp访问权限的用户进行shell访问.

转载注明原文:安全性 – 设置SSH密钥以自动执行scp的正确方法 - 代码日志