Как часть сценария запуска я должен автоматически открыть несколько окон терминала гнома, один из тех терминалов автоматически отправьте:
ssh user@192.168.1.3
Ограничение с этим - то, что я все еще должен ввести пароль для завершения соединения SSH.
То, что я хочу сделать, - чтобы мой сценарий инициировал команду, и завершите соединение. До той степени я попытался следовать инструкциям, как обрисовано в общих чертах в принятом ответе здесь.
От системы я хочу соединиться от, я работал:
ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key
Это затем предложило мне вводить пароль. Я оставил это пустым, поскольку я не был уверен, для чего это будет, таким образом, я предположил, что установка той потребует разблокирования его с упомянутым паролем каждый раз, когда я использовал бы его.
Продолжая инструкции, связанные выше, я затем выполнил и получил следующее:
ssh-copy-id user@IP
ERROR: No identities found
Быстрый поиск показал, что я должен был указать местоположение ключа, поскольку это не было в месте сохранения по умолчанию, таким образом, я зафиксировал это:
ssh-copy-id -i /home/user/ssh/keys/server1key.pub user@192.168.1.3
После просьбы о пароле сервера это успешно добавило ключ. Однако после попытки войти в систему с "ssh user@IP", мне все еще предложили пароль.
Насколько я знаю, я следовал связанным инструкциям правильно, таким образом, или я пропускаю что-то или возможно существующая конфигурация предотвращает меня для того, чтобы заставлять это работать?
Обе системы используют 18.04 и openssh.
Это приводит к сбою по той же причине это ssh-copy-id
отказавший в первый раз - т.е. потому что Вы выбрали местоположение не по умолчанию для файла идентификационных данных.
Можно разрешить его таким же образом путем добавления -i /home/user/ssh/keys/server1key
к Вашему ssh
команда - отмечает, что для стороны клиента нужно местоположение файла секретных ключей.
От man ssh
-i identity_file
Selects a file from which the identity (private key) for public
key authentication is read. The default is ~/.ssh/identity for
protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.
С другой стороны, можно хотеть создать a ~/.ssh/config
запись файла для хоста вроде
Host somename
Hostname 192.168.1.3
User user
IdentityFile /home/user/ssh/keys/server1key
Другая причина сбоя ssh-copy-id заключается в том, что ключ не добавлен в агент ssh.
Сначала проверьте и запустите, если запущен ssh-agemt
$ eval "$(ssh-agent -s)"
Если вы получили идентификатор процесса, вы можете добавить свой ключ
$ ssh-add -k /home/user/ssh/keys/server1key
С помощью -k вы добавите ключ к цепочке для ключей
Проверьте, добавлены ли ключи с помощью
$ ssh-add -l
Ssh-copy-id должен работать сейчас.
Надеюсь, это сработает для вас .. "sshpass -p yourpassword" автоматически подключится к удаленному хосту.
[root @ localhost .ssh] # sshpass -p пароль123 ssh -l root localhost
Просто выполните 2 команды:
ssh-keygen
ssh-copy-id
Длинный ответ:
user@ip:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): temp_file
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in stemp.
Your public key has been saved in stemp.pub.
The key fingerprint is:
SHA256:5**M user@ip
The key's randomart image is:
+---[RSA 2048]----+
| ... |
| ... |
| .. |
| ..+. o . |
| |
| B |
| |
|= * |
|=+ o . |
+----[SHA256]-----+
И затем:
user@ip:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ipDestination -p portDest