Я хотел бы использовать два различных сервиса, которые используют аутентификацию с открытым ключом, не имея необходимость всегда вводить мой пароль.
Что я хочу:
git pull
не вводя мой вход в систему/пароль или мой парольgcloud [...] ssh [...]
не вводя мой пароль каждый раз.На сегодняшний день:
git pull
не просит, чтобы я ввел свои учетные данные, они хранятся внутри ~/.ssh/id_rsa
и ~/.ssh/id_rsa.pub
.gcloud ... ssh ...
всегда просите, чтобы я ввел свой пароль:$ gcloud... ssh...
sign_and_send_pubkey: подписание перестало работать: агент отказался от операции
Введите пароль для ключа '/home/BeChillerToo/.ssh/google':
Это - содержание моего ~/.ssh/config
:
IdentityFile ~/.ssh/google
IdentityFile ~/.ssh/id_rsa
И содержание /etc/ssh/ssh_config
:
Host *
PasswordAuthentication yes
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
Править: Мои ключи, кажется, плохо добавляются.
Вот результат ssh-add -l
после того, как я загружаюсь:
2048 SHA256:+nCvs...CUM+DHqA4 chill@laptop (RSA)
4096 SHA256:bTgKQM...ok chill@gmail.com (RSA)
4096 SHA256:92d3Wy...jc chill@work-mail.com (RSA)
И затем после того, как я добавляю google-compute-engine
ключ:
2048 SHA256:+nCvs...CUM+DHqA4 /home/chill/.ssh/google_compute_engine (RSA)
4096 SHA256:bTgKQM...ok chill@gmail.com (RSA)
4096 SHA256:92d3Wy...jc chill@work-mail.com (RSA)
Ключ, связанный с chill@work-mail.com, является тем, который я использую для GitHub, следовательно почему я не должен предоставлять учетные данные git pull
.
И я подозреваю, что первый ключ (тот, который переключается от chill@laptop
кому: /home/chill/.ssh/google_compute_engine
) тот, вызывающий проблему с gcloud
:
$ gcloud compute ... ssh ...
sign_and_send_pubkey: signing failed: agent refused operation
Enter passphrase for key '/home/chill/.ssh/google_compute_engine':
Используйте ssh-агент. В X средах брелок для ключей GNOME или кошелек KDE могут обработать ключи автоматически. В консоли среда запускаются ssh-agent
как это:
$ eval $(ssh-agent)
## The output without the eval will look like this:
$ ssh-agent
ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-hvcwJQnSOHOi/agent.125894; export SSH_AUTH_SOCK;
SSH_AGENT_PID=125895; export SSH_AGENT_PID;
echo Agent pid 125895;
После ssh-agent
запускается (с eval
). Можно добавить, что ключи SSH с ssh-добавляют
$ ssh-add ~/.ssh/google
$ ssh-add ~/.ssh/id_rsa
С текущими версиями SSH можно также добавить опцию AddKeysToAgent к ~/.ssh/config
файл:
## ~/.ssh/config
AddKeysToAgent yes
Это автоматически добавит ключи к агенту, если переменные среды SSH_AUTH_SOCK
и SSH_AGENT_PID
установлены.
Также проверьте это сообщение на sign_and_send_pubkey: подписание перестало работать: агент отказался от операционной ошибки.
Комбинация ответа @Simon Sudler и этого другого:
1. Your home directory ~, your ~/.ssh directory and the ~/.ssh/authorized_keys file on the remote machine must be writable only by you: rwx------ and rwxr-xr-x are fine, but rwxrwx--- is no good¹, even if you are the only user in your group (if you prefer numeric modes: 700 or 755, not 775).
2. If ~/.ssh or authorized_keys is a symbolic link, the canonical path (with symbolic links expanded) is checked.
Your ~/.ssh/authorized_keys file (on the remote machine) must be readable (at least 400), but you'll need it to be also writable (600) if you will add any more keys to it.
3. Your private key file (on the local machine) must be readable and writable only by you: rw-------, i.e. 600.
(полномочия отвечают конкретно),
решенный мой вопрос в мгновение ока.