-1

проблема

После этого поста я попытался использовать diff поверх ssh используя замену процесса bash

 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:

Но все, что я пишу, отображается в следующей строке! Если я нажимаю ввод, то ничего не происходит.

Экстра-инфо

При сравнении локальных файлов diff работает нормально

ssh кажется, работает нормально

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

Я на Mac OSX 10.11.2

2 ответа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 - ваш закрытый ключ. Это должно остановить запросы пароля.

0

Таким образом, команда diff не использует ввод вместо ssh если в этом проблема.

ssh myServer 'cat foo' | diff foo -

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .