hasło bez hasła dla innej nazwy użytkownika?


14

Chcę wykonać połączenie ssh bez hasła dla projektu subversion. Obecnie używam ssh + svn i jest to trochę denerwujące, ponieważ muszę wpisać hasło za każdym razem, gdy chcę dokonać transakcji z serwerem.

Znalazłem w Internecie kilka samouczków na temat generowania klucza dla ssh bez hasła, ale wszystkie wydają się zakładać, że używam tej samej nazwy użytkownika w systemie zdalnym, jak w moim systemie domowym. Jednak nazwa użytkownika, której używam dla ssh + svn, jest inna niż nazwa konta użytkownika w systemie, który używam. Jak poprawnie to skonfigurować? Nie miałem szczęścia po prostu zmieniając nazwę w pliku kluczy.

Odpowiedzi:


15

Musisz tylko podać nazwę użytkownika drugiego systemu w svnpoleceniu:

$ svn co svn+ssh://otheruser@othersystem/path/to/repo

Aby odpowiedzieć również na tytuł pytania:

$ ssh otheruser@othersystem

Powoduje to, że sshdna komputerze zdalnym szuka ~otheruser/.ssh/authorized_keysklucza publicznego odpowiadającego kluczowi prywatnemu na komputerze, na którym wpisujesz polecenie.


1
Dlatego częścią instrukcji było utworzenie pliku .ssh/id_rsa.pubi przesłanie go na zdalny serwer. Kiedy to zrobiłem, skończyło się na localusername @ localsystem. To powinno być zmienione na remoteusername @ remotesystem, prawda? Zarówno lokalnie, jak i zdalnie?
user394,

5
Nie. Po prostu dołącz zawartość swojego komputera lokalnego id_rsa.pubdo authorized_keyszdalnego systemu. To zadziała
Warren Young,

1
przemian, wiele systemów ma ssh-copy-id, aby rozwiązać ten problem: "ssh-copy-id -i ~ / .ssh / id_rsa.pub nazwa_użytkownika @ zdalną maszynę"
Matt Simmons

Niestety wielu nie, i wydaje się, że nie jest to standardowa część OpenSSH, więc istnieje co najmniej kilka różnych implementacji tego skryptu.
Warren Young,

Jeśli używasz gnome konika morskiego, zautomatyzuj wdrażanie kluczy.
Maciej Piechotka,

9

Można to zrobić na dwa sposoby:

1) umieść użytkownika @ w url svn; to mówi svn + ssh, aby zalogował się jako ten użytkownik. Myślę, że jest to zły pomysł z punktu widzenia konserwacji, ponieważ takie elementy zewnętrzne, które wskazują na inne części repozytorium, nie będą działać poprawnie.

2) wykonaj ~ / .ssh / config (udokumentowany jako ssh_config ), który mówi coś takiego:

Host othersystem
  User otheruser

w ten sposób każda próba ssh do innego systemu będzie domyślnie używać innego użytkownika. Jest to przydatne, gdy wykonujesz ssh ręcznie, a także gdy używasz svn.


5

Nie musisz mieć tej samej nazwy użytkownika na obu urządzeniach. Tak długo, jak generujesz klucz ( ssh-keygen), musisz kopiować linię z ~/.ssh/id_rsa.publub ~/.ssh/id_dsa.pub(w zależności od rodzaju klucza) z lokalnego serwera i dołączać go do ~/.ssh/authorized_keyszdalnego.

% ssh-keygen
% cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Jeśli nie chcesz pisać za remoteuserkażdym razem, dołącz do ~/.ssh/config:

Host remoteserver
    User remoteuser

PS. Nazwa klucza może być w formie localuser@localhost, ale jest to tylko nazwa . Może być równie dobrze myfavouritekey@myfavouritecomputeri nikogo to nie obchodzi.


Komenda „cat” powyżej jest rdzeniem popularnego, ale niestandardowego ssh-copy-idskryptu wspomnianego powyżej. Rozumiem to, ponieważ nie wszystkie systemy, z których korzystam, pochodzą ssh-copy-id, więc napisałem coś takiego więcej niż kilka razy. :)
Warren Young,

Nigdy nie słyszałem o ssh-copy-id. Zwykle używam vimlub seahorse;)
Maciej Piechotka,

0

Po utworzeniu .ssh / config i uruchomieniu:

cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Dostaję błąd:

Bad owner or permissions on /usr/share/eprints3/.ssh/config

potem dodaję chmod 600 .ssh/config, a potem działa płynnie.

enter code here

1
Lepiej, jeśli dodasz go do pliku uprawnione_ klucze, w przeciwnym razie usunie również klucze pubów innych osób. Więc lepiej, jeśli edytujesz swoją odpowiedź za pomocą „cat >> .ssh / author_keys”
Nitin Mahesh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.