Сценарий оболочки ключ grep rsa от авторизованного ключа - PullRequest
0 голосов
/ 04 декабря 2011

Эта команда оболочки не работает:

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

$ KEY содержит мой открытый ключ RSA.Я пытаюсь проверить, был ли мой ключ добавлен в файл author_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 Ответ

4 голосов
/ 04 декабря 2011

Вы расширяете $() штуку на стороне клиента. (как минимум).

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

выглядит как более короткий способ сделать то же самое.

...