SSH без пароля з нерозташованим файлом ідентифікаційного файлу за замовчуванням


16

Як частина сценарію запуску, я повинен автоматично відкривати кілька вікон gnome-terminal, один з цих терміналів автоматично надсилає:

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.


Тож мені потрібно вказати розташування файлу .pub при відправці команди SSH?
hiigaran

У мене є трохи інший спосіб організації моїх файлів, отже, місця, де не за замовчуванням, але ви, хлопці, дуже допомогли. Спасибі. Не соромтеся зробити це відповіддю, яке я можу прийняти.
hiigaran

Відповіді:


35

Він не вдається з тієї ж причини, що 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.

Крім того, ви можете створити ~/.ssh/configзапис файлу для хоста за рядками

Host            somename
Hostname        192.168.1.3
User            user
IdentityFile    /home/user/ssh/keys/server1key

1
Я завжди вважав, що конфігураційний файл вимагає відступу - я бачу, що це не так. Нав'язливий.
Борис Павук

Усі, хто використовує OpenSSH, мають мати ~/.ssh/config, інакше OpenSSH використовує системний за замовчуванням /etc/ssh/ssh_config. Якщо хтось вважає це корисним, я завантажив заздалегідь створений ssh_config до свого GitHub як вихідний пункт для користувачів, які можуть не встигнути прочитати сторінку чоловіка
ssh_config

@ JW0914 - це лише наполовину правда: окремі значення в ~/.ssh/configпереважають значення глобальних ssh_config, але лише наявність файлу не відключить конфігурацію системи.
Себастьян Старк

@SebastianStark Можливо, ви неправильно прочитали мій коментар, оскільки я ніколи не заявляв, що це відключить конфігурацію системи. Те, що я заявив, було на 100% фактично точним.
JW0914

2

Ще одна причина, яка ssh-copy-idне вдається - це те, що ключ не доданий до агента SSH.

Спочатку перевірте і запустіть, чи ssh-agentпрацює:

eval "$(ssh-agent -s)"

Якщо ви отримаєте ідентифікатор процесу, ви можете додати свій ключ:

ssh-add -k /home/user/ssh/keys/server1key

З -kвами додати ключ до зв'язки ключів.

Перевірте, чи додані ключі за допомогою:

ssh-add -l

ssh-copy-id повинні працювати зараз.


-1

Сподіваюся, що це спрацює для вас .. "sshpass -p yourpassword" він автоматично увійде на віддалений хост.

[root @ localhost .ssh] # sshpass -p пароль123 ssh -l root localhost


-1

Просто виконайте 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.