Dlaczego nie mogę `diff` nad` ssh`?

-1

Problem

Następujący ten post Próbowałem użyć diff koniec ssh za pomocą podstawienia procesu bash

 diff foo <(ssh myServer 'cat foo')

Kiedy wprowadzę następujące polecenie

diff /Volumes/MyBook/Remi/SimulationsOutputs/Hermes/C_no_F/C_no_F_allele_005.txt  <(ssh [email protected] 'cat /home/matthey/scratch/Plasticity/outputs/C_no_F/C_no_F_allele_005.txt')

, Zostałem poproszony o wprowadzenie hasła (zgodnie z oczekiwaniami) w następujący sposób

[email protected]'s password:

Ale cokolwiek piszę, jest wyświetlane w następującym wierszu! Jeśli nacisnę enter, nic się nie stanie.

Informacje dodatkowe

diff wydaje się działać dobrze podczas porównywania plików lokalnych

ssh wydaje się działać dobrze

Po dwukrotnym sprawdzeniu 25 razy mogę powiedzieć, że pliki istnieją i że znam hasło!

Jestem na Mac OSX 10.11.2

Remi.b
źródło

Odpowiedzi:

0

Wszystko, co musisz zrobić, to wygenerować parę kluczy prywatnych / publicznych na komputerze, skopiować klucz publiczny na serwer, a następnie połączyć się. Można to zrobić, uruchamiając ssh-keygen -t rsa na twojej lokalnej maszynie. Wynik będzie podobny do poniższego:

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:~$

Następnie musisz skopiować klucz publiczny na serwer. Moim ulubionym sposobem jest otwarcie klucza publicznego ssh w textedit i skopiowanie go. Klucz można znaleźć pod adresem ~/.ssh/id_rsa.pub gdzie ~ oznacza twój katalog domowy.

Po skopiowaniu do schowka ssh na serwer i uruchom to polecenie (uwaga, aby nie kopiować + wklejać, ponieważ masz już klucz publiczny w schowku):

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

Powyższy kod utworzy wymagany katalog i plik, a następnie sprawi, że będą miały odpowiednie uprawnienia. po czym powinieneś nano otwarty. Wklej klucz publiczny, naciśnij Ctrl + X powiedz tak przy monitach, a następnie wyloguj się z ssh.

Następna część to implementacja kodu. Można to zrobić w ten sposób:

diff foo <(ssh myServer -l user -i .ssh/id_rsa 'cat foo') gdzie user to twoja nazwa użytkownika dla serwera i .ssh/id_rsa to twój klucz prywatny. Powinno to zatrzymać wyświetlanie monitów o hasło.

td512
źródło
Czy jesteś pewien, że przyczyną problemu jest monit o hasło? Czy możesz mi wytłumaczyć dlaczego? To dziwny problem, jestem ciekawy, co go powoduje.
gronostaj
@Gronostaj mówi w OP [email protected]'s password: metoda klucza SSH oznacza brak pytania o hasło, ponieważ serwer + klient negocjuje automatycznie
td512
@Gronostaj to tylko po to, aby ominąć monit o hasło i pozwolić ssh wykonać zadanie
td512
Rozumiem, co próbujesz zrobić, to nie moje pytanie. Regularne SSH z hasłem działa dobrze, chyba że spróbujesz przekierować jego wyjście, strumienie wejściowe i wyjściowe działają. Dlaczego przekierowanie wyjścia działa z kluczami, ale nie z hasłem?
gronostaj
@Gronostaj Nie jestem pewien. Wiem tylko, że to działa ...
td512
0

Tą drogą diff polecenie nie pobiera danych wejściowych zamiast ssh jeśli to jest problem.

ssh myServer 'cat foo' | diff foo -
J.J. Hakala
źródło