Używam Ubuntu 11.10. Używam ssh
do łączenia się z wieloma serwerami codziennie, więc umieszczam ich parametry w .ssh/config
pliku w następujący sposób:
Host Home
User netmoon
Port 22
HostName test.com
Czy istnieje sposób na umieszczenie haseł dla każdego połączenia w tym pliku, aby gdy serwer poprosił o hasło, terminal wprowadził swoje hasło i wysłał je na serwer?
Potrzebuję tego, ponieważ czasami odstaję od komputera, a kiedy wracam, wpisz hasło i naciśnij Enterterminal mówi CONNECTION CLOSED
.
PS Nie chcę używać pary kluczy publiczny / prywatny.
command-line
bash
ssh
remote-access
Netmoon
źródło
źródło
SSH_ASKPASS
.Odpowiedzi:
Zamiana bezpieczeństwa dla wygody nigdy się nie kończy dobrze ...
Czy możesz użyć
ssh-copy-id
zopenssh-client
paczki?Od
man ssh-copy-id
:źródło
Jeśli tak naprawdę nie chcesz używać pary kluczy publiczny / prywatny, możesz napisać
expect
skrypt, który automatycznie wprowadzi hasło w zależności od adresu docelowego.Edycja: Mam na myśli to, że możesz mieć skrypt, który z jednej strony używa
expect
hasła do ciebie, az drugiej strony odczytuje hasło dla danego użytkownika i hosta z pliku konfiguracyjnego. Na przykład następujący skrypt w języku Python będzie działał w scenariuszu ze słonecznym dniem:a format pliku konfiguracyjnego byłby następujący:
Uwaga: Jak wyjaśniono, skrypt w języku Python musiałby być znacznie bardziej skomplikowany, aby obsłużyć wszystkie możliwe błędy i komunikaty pytań z ssh i wszystkich możliwych adresów URL (w przykładzie założono, że będzie to coś podobnego
user@host
, ale część użytkownika nie jest używane przez większość czasu), ale podstawowa idea pozostanie taka sama. Jeśli chodzi o plik konfiguracyjny, możesz użyć innego pliku konfiguracyjnego lub użyć.ssh/config
i napisać własny kod, aby przeanalizować ten plik i uzyskać hasło dla danego użytkownika i hosta.źródło
Istnieje również
sshpass
program do tego. Jak używać:sshpass -p MyPa55word ssh [email protected]
źródło
sshpass
zamiastsshpass
), właśnie zapisałeś hasło („MyPa55word”) w pliku historii powłoki..ssh/config
, dlaczego nie w historii muszli?brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
. Więcej: gist.github.com/arunoda/7790979read -s password; sshpass -p "$password" ssh [email protected]
. Zapobiegnie to wyświetlaniu hasła w historiiCo z ProxyCommand:
Możesz użyć
ssh -W
zamiastnc
:źródło
-W
opcją. Czy masz jakieś obejście?test.com
wymagania hasła naHome
wymaganie hasła. Jaki jest sens? Jaka jest sztuczka, aby to zadziałało?Nie. Obawiam się, że to niemożliwe.
Jedyną prawdziwą alternatywą jest używanie kluczy prywatnych, ale powiedziałeś, że nie chcesz (dlaczego nie?).
źródło
Możesz utworzyć prostą zamianę skryptu ssh w / usr / local / bin:
A następnie w pliku ~ / .ssh / config możesz użyć
źródło
Korzystam z aplikacji VanDyke Software o nazwie SecureCRT .
http://www.vandyke.com/products/securecrt/
To nie jest darmowe, ale w bardzo przystępnej cenie. Używam go od lat (działając w systemie Windows lub Wine) do zdalnego dostępu, emulacji terminala i (rozproszonego) zarządzania siecią. W końcu wydali natywną wersję Linuksa na początku 2011 roku.
Obsługuje złożone ustawienia logowania (lub skrypty), przechowywane hasła (lub certyfikaty), wiele sesji na kartach itp.
Podczas uruchamiania możesz wybrać, który zdalny cel (i protokół) z ustrukturyzowanej listy (widoku drzewa) przechowywanych zdalnych (lub lokalnych) maszyn, lub po prostu utworzyć połączenie (które jest następnie przechowywane).
Uważam, że jest to szczególnie przydatne w przypadku zdalnych witryn z zaawansowanym uwierzytelnianiem, niestandardowymi portami lub negocjacjami dotyczącymi dostępu do zapory.
Jeśli często korzystasz z dostępu zdalnego (część swojej głównej roli), ta aplikacja uzasadni swój koszt w pierwszym miesiącu użytkowania.
źródło
Odpowiadając na zadane pytanie, nie, nie można skonfigurować domyślnego hasła w pliku konfiguracyjnym ssh.
Ale jeśli rzeczywiście, jak mówisz, jest to „ponieważ czasami odstaję od komputera i kiedy wracam, wpisz hasło i naciśnij Enterterminal mówi
CONNECTION CLOSED
” , to dlaczego nie zapobiec zamknięciu sesji? SSH może utrzymywać połączenia dla Ciebie.źródło
Dzięki, Arek za inspirację ...
Zamiast uruchamiania innego procesu powłoki, jest to tylko funkcja działająca w bieżącej powłoce bash. Prowadzi jednego
awk
polecenia do analizowania pliku konfiguracyjnego i dowiedzieć się, czy powinien wziąć hasło ze zmiennej powłoki lub z hasłem napisany w czystym tekście do pliku konfiguracyjnego ssh (zawk
w sposóbeval
zamiastdescribe
z powodu problemów uderzę użyciudescribe
).Próbowałem tak wielu sposobów używania
sshpass
bezpośrednio wssh
pliku konfiguracyjnym za pomocą ProxyCommand, ale nic nie działało zgodnie z oczekiwaniami, z wyjątkiem sytuacji, gdy mogłem zalogować się do skrzynki za pośrednictwem RSA. Ale potem musiałem wysłać hasło, aby otworzyć mój zaszyfrowany katalog. Jednak moja funkcja poniżej wydaje się działać dla mnie we wszystkich przypadkach, nawet dla Cygwin.Następnie
~/.ssh/config
sekcja wygląda następująco:Jeśli
#Passvar
istnieje sekcja konfiguracji, to zastępuje#Password
.$MYPASS_ENVVAR
to zmienna środowiskowa przechowująca twoje hasło.Cieszyć się!
źródło
Odpowiedź @BrunoPereira na to pytanie pokazuje alternatywną metodę połączenia bez jawnego wprowadzania hasła i unikania kluczy ssh.
Możesz utworzyć skrypt, alias lub funkcję,
~/.bashrc
aby szybko wykonać to polecenie.Oczywiście są to względy bezpieczeństwa, które należy wziąć pod uwagę przy takim podejściu.
źródło
Oto moja rozbudowana odmiana odpowiedzi @ ArekBurdach. Oferuje następujące rozszerzenia:
ssh
linii poleceń; tzn. obsługuje równieżssh <args> <host> <commands>
składnięssh
ssh_config
scp
zbytssh-wrapper
scp-wrapper
Instalacja
Zdefiniuj aliasy w swoim
~/.bashrc
:Konfiguracja
Dzięki
IgnoreUnknown
dyrektywiessh
nie narzeka na nowo wprowadzonąPassword
dyrektywę, więc (w przeciwieństwie do odpowiedzi @ ArekBurdach) możemy sprawić, że będzie to wyglądać jak „prawdziwa” konfiguracja. Jeśli ci się to nie podoba, zmiana skryptu na skomentowany jest banalnie.źródło
Jeśli nie masz bezpośredniego dostępu do pary kluczy, możesz zaszyfrować hasło na komputerze lokalnym.
Sposobem na to jest zaszyfrowanie hasła przy użyciu klucza oprócz ProxyCommand @Eric Woodruff.
Jednym ze sposobów łączenia jest użycie potoku:
gdzie
źródło
Istnieje niewielki wariant sposobu opisanego na blogu, w jaki sposób korzystać,
sshpass
który można znaleźć tutaj . Biorąc pod uwagę, że masz zaszyfrowane hasło gpg (jak to opisano w blogu), możesz zrobić coś takiego:i po prostu zapisz to polecenie jako alias w swoim
.bashrc
.Jeśli chcesz tunelować przez to połączenie, możesz zrobić coś takiego
źródło