来自authorized_keys的Shell脚本grep rsa密钥

时间:2011-12-03 22:01:53

标签: bash shell ssh rsa

此shell命令无效:

ssh root@IP "if '$(cat ~/.ssh/authorized_keys | grep $KEY)' == '';then;echo $KEY >> ~/.ssh/authorized_keys;done"

$ KEY包含我的公共RSA密钥。我要做的是检查我的密钥是否已添加到authorized_keys文件中,如果没有,则添加它。 IP当然被替换为真实的IP地址。 知道我做错了吗?

编辑: 如果有人好奇,这就是我在做的事情:

#!/bin/sh

# Get your RSA key.
KEY=""
for line in $(cat ~/.ssh/id_rsa.pub)
do
    KEY="$KEY $line"
done

# Add your RSA key to the machine's authorized_keys if it's not already there.
ssh root@$1 "grep -q '$KEY' ~/.ssh/authorized_keys || echo '$KEY' >> ~/.ssh/authorized_keys"

# Connect to the machine.
ssh root@$1

我的想法是将ssh插入一台机器(使用此脚本),而不必在下次登录时输入密码.IP地址作为命令行参数传递。

1 个答案:

答案 0 :(得分:4)

您在客户端展开$() thingie。 (至少)。

ssh root@IP "grep -q '$KEY' .ssh/authorized_keys || echo '$KEY' >>.ssh/authorized_keys"

看起来像是一种较短的方法。