Чому мені не вдалося `розрізнитись над` ssh`?


-1

Проблема

Після цього поста я намагався використовувати diffбільш sshвикористовуючи заміну процесу Баша

 diff foo <(ssh myServer 'cat foo')

Коли я ввожу наступну команду

diff /Volumes/MyBook/Remi/SimulationsOutputs/Hermes/C_no_F/C_no_F_allele_005.txt  <(ssh matthey@bugaboo.westgrid.ca 'cat /home/matthey/scratch/Plasticity/outputs/C_no_F/C_no_F_allele_005.txt')

, Мене просять ввести свій пароль (як очікувалося) наступним підказом

matthey@bugaboo.westgrid.ca's password:

Але все, що я пишу, відображається у наступному рядку! Якщо я натискаю Enter, то нічого не відбувається.

Додаткова інформація

diff начебто добре працює при порівнянні локальних файлів

ssh здається, працює добре

Після подвійної перевірки 25 разів, я можу сказати, що файли існують і що я знаю пароль!

Я на Mac OSX 10.11.2

Відповіді:


0

Все, що вам потрібно зробити, - це створити на вашому ПК пару приватних / відкритих ключів, скопіювати відкритий ключ на сервер і потім підключитися. Це можна зробити, запустивши ssh-keygen -t rsaна локальній машині. Вихід буде аналогічним нижче:

td512@kettecomp2:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/td512/.ssh/id_rsa):
Created directory '/home/td512/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/td512/.ssh/id_rsa.
Your public key has been saved in /home/td512/.ssh/id_rsa.pub.
The key fingerprint is:
f9:cd:fe:c1:77:90:40:34:9c:34:cb:f6:2c:cc:32:6a td512@kettecomp2
The key's randomart image is:
+--[ RSA 2048]----+
|           +*.   |
|           oo+   |
|            =    |
|         . + + . |
|        S o + =  |
|         o = o . |
|        E . o o o|
|       .   .   o.|
|            ...  |
+-----------------+
td512@kettecomp2:~$

Після цього потрібно скопіювати відкритий ключ на сервер. Мій улюблений спосіб - відкрити відкритий ключ ssh в textedit і скопіювати його. Ключ можна знайти ~/.ssh/id_rsa.pubтам, де ~позначає ваш домашній каталог.

Після копіювання у буфер обміну, ssh на сервер та запустіть цю команду (будьте обережні, щоб не копіювати + вставити, оскільки у вашому буфер обміну вже є відкритий ключ):

cd && mkdir .ssh && chmod 700 .ssh && touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys && nano .ssh/autorized_keys

Вищевказаний код створить необхідний каталог і файл, а потім зробить їх потрібними правами. після чого ви повинні мати nanoвідкриті. Вставте свій відкритий ключ, натисніть Ctrl+ Xскажіть "так" у підказках, а потім вийдіть із ssh.

Наступна частина - реалізація вашого коду. Це можна зробити так:

diff foo <(ssh myServer -l user -i .ssh/id_rsa 'cat foo')де userваше ім’я для сервера і .ssh/id_rsaваш приватний ключ. Це повинно зупинити підказки пароля.


Ви впевнені, що проблема викликана запитом пароля? Чи можете ви пояснити, чому? Це дивна проблема, мені цікаво, що це викликає.
gronostaj

@gronostaj каже, що в ОП matthey@bugaboo.westgrid.ca's password:метод ключа SSH означає відсутність запиту пароля, оскільки сервер + клієнт домовляються автоматично
td512

@gronostaj це просто обійти підказку пароля і нехай ssh ​​зробить свою роботу
td512

Я розумію, що ви намагаєтесь зробити, це не моє питання. Регулярні SSH-файли з паролем спрацьовують добре, якщо ви не намагаєтеся перенаправити його вихідні, вхідні та вихідні потоки. Чому виведення перенаправлення працює з ключами, а не з паролем?
gronostaj

@gronostaj Я не впевнений. Все, що я знаю, це те, що це працює ...
td512

0

Таким чином diffкоманда не споживає введення, а не, sshякщо це проблема.

ssh myServer 'cat foo' | diff foo -
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.