是否有单行命令告诉SSH将提供的公钥添加到本地计算机的authorized_keys文件中? 本地版本的ssh-copy-id ?
我正在写一个厨师食谱,并希望确保为特定用户设置特定的SSH公钥。 我每次都可以覆盖~/.ssh/authorized_keys文件,或者尝试一些冒险的方法来添加行,但是如果有官方的命令,它会更加健壮并且防止重复。
就像是:
ssh-add-local-key "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeblahdeblah user@somwhere"
对于像Ubuntu或Debian这样的apt系统,有一个apt-add-repository命令,所以我想知道是否有一个SSH的等价物。
更新 :我知道我可以使用“echo blah >> authorized_keys”,但我想要一些幂等的,我可以定期运行。 用>>这个文件每次都会增长。
我不知道这样的本地命令。 我不喜欢ssh-copy-id foo@localhost (因为它会打开一个SSH连接),我甚至不喜欢容易出错的echo foo >> ~/.ssh/authorized_keys 。
但是,既然你使用的是厨师,为什么不使用你可用的厨师工具(主要是ruby)呢?
例如:
ruby_block "authorized_keys" do block do file = Chef::Util::FileEdit.new("/home/#{username}/.ssh/authorized_keys") file.insert_line_if_no_match("/#{authorized_key}/", "#{authorized_key}") file.write_file end end
insert_line_if_no_match文档:
#insert_line_if_no_match(regex, newline) ⇒ Object
一行一行地search文件,如果不匹配,将每一行与给定的正则expression式匹配,在文件末尾插入换行符
这对我来说似乎并不算什么,提供了一个简单易懂的方法来解决你的问题。
另一种select是比尔·沃纳斯回答类似的问题: https : //stackoverflow.com/a/28283354/2376817