关于术语的快速注释。如提示所示,该密码用于私钥密钥。使用ssh密钥对时,密钥分为两部分 - 私钥需要保持安全,并且秘密且永远不会离开ssh启动会话。公钥可以安全共享,并且可以自由传输。
当您尝试自动执行ssh事务并且您必须提供密码时,并且您正在考虑在脚本或配置中的某处存储密码时,那么密码不再是秘密,您也可以没有密码。
一对夫妇的事情,你可以尝试
1)不要使用密码打扰!它们是可选的。生成没有密码的密钥,供脚本使用。很明显,这比有一个密钥对的安全性要低,你应该采取额外的步骤来锁定它。 您可以通过在远程主机的authorized_keys文件中提供其他参数来限制此ssh密钥有权运行的命令。通过这种方式,您可以拥有不太安全的密钥,但限制了任何设法访问私钥的人都可以执行的操作。
您可以使用ssh-keygen
生成一个新的密钥对。为它提供一个新的文件名,只需在提示输入密码时按回车键,这将为您提供一个新的用于脚本的私有/公用密钥对,该密钥对不需要密码输入。
authorized_keys
文件需要存在于远程主机上的远程用户帐户的~./ssh
目录中。一个典型的键入将如下所示(为清楚起见,我已截断了关键指纹)。如果你还没有一个,你可以做一个新的。对于此文件,您需要添加新密钥对中密钥文件public的文本。这是一个.pub
扩展名。公钥文本具有这种格式。
支持SSH-RSA AAAAB3NzaC1yc ... [email protected]
它由几个领域都在同一行,用空格隔开的。第一个领域是关键类型。长字符串和数字编码密钥对的公钥。最后一个字段是帮助识别人类密钥的注释,通常它具有生成密钥的用户名和主机名。您可以选择将一个选项字段添加到键入口的前面。这包含逗号分隔的一组选项值,适用于通过此密钥对启动的会话。 您可以将command
参数添加到授权密钥的选项字段中,以标识允许密钥运行的特定命令。这可以用来限制无密码密钥对允许执行的操作。
命令= “/ USR/bin中/ LS” SSH-RSA AAAAB3NzaC1yc ... [email protected]
此密钥对只能运行 'ls' 的远程。
2)使用ssh-agent。如果您在执行脚本时在shell环境中拥有经过身份验证的代理,则它将提供ssh密钥凭据,而无需每次都提供密码。
典型用途:
您在shell中运行
eval `ssh-agent`
启动代理守护进程。 eval表达式会导致在shell环境中设置代理会话环境变量。现在
可以运行
ssh-add ~/.ssh/my-passphraseless-private-key.rsa
加载专用钥匙插入剂。代理将要求您输入密码以解锁密钥。然后它将缓存shell的生命周期的凭证。因此,您可以运行使用此密钥的脚本,并且不需要提示输入密码。
来源
2014-10-29 09:27:39
cms