Если я чувствую, что мой исходный ssh был поставлен под угрозу, потому что у кого-то есть пароль, я должен заменить частную и общедоступную пару ключей или только изменить пароль? Какой является решением, и как я делаю это?
спасибо
Если Вы знаете, что у кого-то есть пароль, он, вероятно, использовал Ваш ssh ключ. Если это так, нет, вероятно, никакого способа для Вас знать, скопировал ли тот человек Ваш ssh ключ или нет. Если у того человека есть копия Вашего ключа, и Вы изменяете пароль на своем ключе, копия очевидно все еще использует старый пароль и поэтому применима тем человеком. Так, чтобы быть на безопасной стороне, я рекомендовал бы заменить Ваш ssh ключ.
Можно генерировать новый ключ путем выполнения
ssh-keygen -f ~/.ssh/new-key
Это создаст новый ключ ssh ~/.ssh/new-key
.
Не забывайте к не, только создают новый ключ, но и удалить Ваш старый ключ из всех машин, которые имеют его.
Обновление: Чтобы сделать это, сначала составьте список всех машин, можно получить доступ с этим к ssh ключу. Затем для каждой из этих машин сделайте следующее:
user@local:~$ ssh someuser@somemachine
someuser@somemachine:~$ nano .ssh/authorized_keys
Отредактируйте тот файл и сделайте следующее:
cat ~/.ssh/id_rsa.pub
на Вашей локальной машине (принимающий Ваш старый ключ id_rsa, если не необходимо скорректировать команду). Удалить строку в nano
, просто нажмите Ctrl+K.cat ~/.ssh/new-key.pub
. Скопируйте целую строку дословно в файл как одна строка.nano
.Затем протестируйте, если можно получить доступ к машине с новым ключом, не закрывая существующее соединение (таким образом, Вы все еще соединены в случае, если что-то идет не так, как надо).
user@local:~$ ssh -i ~/.ssh/new-key someuser@somemachine
Если это работает, и Вы подключены к удаленной машине, Вы успешно заменили свой ssh, включают ту машину. Теперь продолжите следующую машину. Повторитесь, пока не сделано.
Вы можете автоматизировать этот целый процесс немного:
ssh-copy-id -i ~/.ssh/new-key.pub someuser@somemachine
ssh -i ~/.ssh/new-key someuser@somemachine "sed -i.bak 's/$(cut -f2 ~/.ssh/id_rsa.pub | sed 's~/~\\/~g')/d' ~/.ssh/authorized_keys"
Но я не беру гарантии, что это будет работать и не блокировать Вас из некоторых машин. Используйте на Ваш собственный риск!
То, что это делает, использовать ssh-copy-id
скопировать по Вашему новому ключу и использованию sed
удалить Ваш старый ключ из authorized_keys
файл. $(cut -f2 ~/.ssh/id_rsa.pub | sed 's~/~\\/~g')
добавляет Ваш старый открытый ключ к команде, таким образом, это может искать его и заботится для выхода из наклонных черт. /some-string/d
удаляет всю соответствующую строку строк (в нашем случае Ваш старый ключ) из файла.
Сделайте это, только если у Вас есть много машин, чтобы изменить Ваш ключ и протестировать его сначала на машине, у Вас есть физический доступ к или некоторый другой способ восстановить доступ, если вещи идут не так, как надо. Конец Обновления
После замены старого ключа, можно переименовать ключ к ~/.ssh/id_rsa
так ssh
находит его автоматически. Вы могли бы хотеть сохранить резервное копирование своего старого ключа в случае, если Вы забыли систему, к которой у Вас иначе больше не будет доступа.
Обновление: чтобы сделать так, просто работайте:
cd ~/.ssh
mv id_rsa id_rsa_old
mv id_rsa.pub id_rsa_old.pub
mv new-key id_rsa
mv new-key.pub id_rsa.pub
Если необходимо использовать старый ключ для чего-то снова, можно использовать ssh -i ~/.ssh/id_rsa_old
использовать его. Не забывайте добавлять свой новый ключ к той машине и удалять старый ключ.