OpenSSH:ssh-add/ssh-agent命令以秒为单位设置最大生存时间

时间:2020-01-09 10:45:52  来源:igfitidea点击:

我使用Mac OS X和ssh-agent + ssh-add的组合将RSA或者DSA身份添加到身份验证代理。

ssh-agent为我提供了一种存储私钥的安全方法。
但是,如何在半小时内使添加到代理中的身份过期。
如何设置在Unix/Linux/BSD/Apple OS X操作系统下添加到代理的身份的生存期?

ssh-agent和ssh-add命令都具有一个选项,可为添加到代理的身份的最大生存期设置默认值。
生存期可以以秒为单位或者以/etc/ssh/sshd_config文件中指定的时间格式指定。
使用ssh-add为身份指定的生存期将覆盖此值。
如果没有此选项,则默认的最大生存期是永远的。
语法如下所示,以使半小时内添加到代理程序的身份失效:

ssh-agent -t 30 bash
ssh-add

或者

ssh-agent ksh
ssh-add -t 30

时间格式示例

sshd服务器的命令行参数和指定时间的配置文件选项可以使用以下形式的序列表示:

time[qualifier]

其中,时间是一个正整数,而限定词是下列之一:

时间格式示例
无(默认)ssh-agent -t 30ssh-add -t 30
s或者Ssecondsssh-agent -t 30sssh-add -t 30S
m或者M分钟ssh-agent -t 30mssh-add -t 30M
h或者H小时ssh-agent -t 30hssh-add -t 30H
d或者Dssh-agent -t 1dssh-add -t 1D
w或者Wweeksssh-agent -t 2wssh-add -t 2W

您可以组合上表中的序列的每个成员,并将其加在一起以计算总时间值。
在此示例中,在90分钟内将过期身份添加到代理中:

$ ssh-agent bash
$ ssh-add -t 90m
$ ssh [email protected]

或者

$ ssh-agent bash
$ ssh-add -t 1h30m
$ ssh [email protected]

最长寿命设置为90分钟,即90分钟后,您将无法登录服务器。
因此,如果有人偷了您的笔记本电脑或者试图访问不受保护的控制台会话,则他们将无法使用您的私钥。

对钥匙串问好

我强烈建议您将钥匙串用作ssh-agent的管理器,通常从~/.bash_profile运行,如下所示:

$ /usr/bin/keychain --clear $HOME/.ssh/id_rsa

上面的命令将删除所有ssh-agents密钥。
通常,它在.bash_profile中使用。
其背后的理论是,除非另有证明,否则钥匙串应假定您是入侵者。
但是,尽管此选项提高了安全性,但仍允许您的cron作业在您注销后使用ssh密钥。