我想设置SSH密钥来自动化scp作业。 我目前的假设是“自动化”意味着没有密码的SSH密钥,但我愿意接受您的build议。
在我问这个问题之前,我做了很多Googlesearch。 这是我发现的:
因此,这个问题是杰夫·阿特伍德所说的“让互联网变得更美好”的主要候选人。
为了这个问题的目的,想象这个configuration:
user1@host1 user2@host2 user3@host3 user1@host1和user2@host2 (等)到user3@host3使用scp 我已经知道:
ssh-keygen生成SSH密钥 ~/.ssh/id_dsa有私钥 ~/.ssh/id_dsa.pub有公钥 ~/.ssh/id_dsa.pub复制到~/.ssh/authorized_keys并仔细设置其文件权限 ~/.ssh/id_dsa.pub内容以便与scp一起使用 在我自己的不同主机/用户之间的testing中,我知道我的设置工作。
什么麻烦我的安全影响。 而且,我承认我不是Linuxpipe理员,也不是安全专家。
scp ,那么如果同一个密钥泄漏/丢失/被盗给另一个部门呢? scp用作host3 而不使用密码? 重要的假设要考虑你的回应:
我猜测有一种方法来限制特定的SSH密钥的访问,但我不知道如何。 也许~/.ssh/authorized_keys选项(我刚才了解到)? 是否有可能有多个SSH密钥 – 给每个源不同的密钥?
请告知正确的方法。
user3 @ host3可以拥有许多ssh公钥,因为他们喜欢授予对其帐户的访问权限。 有些可以用密码保护,有些则不用。
每把钥匙都有公共部分和私人部分。 这些密钥将由user1和user2生成,公有一半将被分配给user3。 用户3然后可以将这些密钥添加到他们的authorized_keys文件。 密钥是否被密码保护是由私钥确定的,而不是公共密钥。 所以如果user3被user1授予一个公钥,他们无法判断它是否被密码保护,AFAIK。
您可以在个人计算机上的authorised_keys文件中执行一些限制,如'authorized_keys:restrictting access section'中所述
比方说,你想确保user1只能连接host1和user2你可以放入host2
from="host1" <user1 public key> from="host2" <user2 public key>
那么如果私钥被盗用或被盗用户1或用户2,则他们不能从任何其他机器接入。
不知道这是多好,但可能值得你看看scponly ,看起来阻止shell访问用户,你只希望有scp访问。