Ama*_*rus 2 security ssh rsync ssh-keys
我有2个服务器(A
和B
),我需要从rsync的文件A
,以B
root身份。允许 root ssh 登录是可能的 ( PermitRootLogin without-password
),但我想尽可能地将其锁定。我正在使用 ssh 密钥,并且 (on B
) 根 ssh 密钥 (in /root/.ssh/authorized_keys
) 仅限于A
的 IP 地址 ( from="x.x.x.x ..."
)。
但是我怎样才能更多地锁定(这个 ssh 密钥)呢?是否可以将该 ssh 密钥限制为仅允许 rsync/文件传输(最好仅限于某个目录)?
对此进行研究将我指向提及scponly
shell 或rrsync
来自 rsync 或rssh
来自 OpenSSH 的脚本的古老网页。但是我怎么能只为那个键设置它们,而不让我的整个 root 帐户成为rssh
?
小智 8
rrsync
旨在用作特定键的强制命令,因此它应该正是您想要的。
强制命令是使用command
授权密钥文件中的密钥选项设置的,然后无论客户端请求什么命令,只要使用此密钥进行身份验证,它就会始终运行。但是它可以访问请求的命令,因此它可以例如实现它的经过验证的受限版本,这就是它的rrsync
作用。
你像这样使用它:
command="/path/to/rrsync -wo /allowed/directory/",restrict,from="a.b.c.d" ecdsa-sha2-nistp521 AAAAE...
Run Code Online (Sandbox Code Playgroud)
此密钥的访问权限仅限于 rsync /allowed/directory/
。该-wo
(只写)选项意味着rsync
将只允许发送到远程机器上,-ro
只允许读取从远程系统中,没有给出选项将允许在两个方向上传输。
在本地,当您提供参数时,rsync
您必须提供相对于允许目录的远程路径,因此A
您可以执行例如。
rsync -options /local/path root@B:
而不是 rsync -options /local/path root@B:/allowed/directory/
。
另请参阅this answer to a different but related question。
小智 -2
对访问类型没有硬性限制,但可能会为您的密钥添加密码,然后使用代理将密钥添加到您的会话中。这样,您只需在会话中解锁一次密钥即可进行无密码 ssh/scp/rsync 访问。如果它被盗,它有一个密码保护它不被使用。
使用密码创建密钥
ssh-keygen -f mykeyfile
#make sure you add a passphrase when asked
Run Code Online (Sandbox Code Playgroud)
在使用 SSH/SCP/RSYNC 之前将密钥添加到代理
ssh-add mykeyfile
#enter password here
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3297 次 |
最近记录: |