ssh nie używa już ~ / .ssh / config

20

Nie mogę ssh niczego, co mogłem. Po krótkim kopaniu dowiedziałem się, że nie czyta konfiguracji ssh z mojego katalogu domowego.

$ ssh -xvvv server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
(...)

Na identycznym komputerze znajomego, na którym wszystko działa, wygląda to tak:

$ ssh -xvvv server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/kuba/.ssh/config
(...)

Działało wcześniej i nie jestem świadomy niczego, co mogłem zrobić, aby spowodować ten problem. Jak to się mogło stać i jak to naprawić?

W linku do dokumentacji wskazanym przez Tike stwierdza to

Ze względu na możliwość nadużycia ten plik musi mieć ścisłe uprawnienia: odczyt / zapis dla użytkownika i niedostępny dla innych.

Moje uprawnienia to:

$ ls -la ~/.ssh
total 80
drwx------+ 42 kuba  1029   1428 Jul  1 16:33 ..
-rwx------   1 kuba  1029   1528 May 15 13:07 config
(...)

Myślę, że problemem może być zamieszanie dotyczące katalogu domowego. Gdy wymuszam lokalny plik konfiguracyjny, zaczyna on działać, a następnie nagle zaczyna czytać/nas/kuba

$ ssh -xvvvF ~/.ssh/config server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/kuba/.ssh/config
debug1: /Users/kuba/.ssh/config line 1: Applying options for *
debug1: /Users/kuba/.ssh/config line 39: Applying options for bio
debug2: ssh_connect: needpriv 0
debug1: Connecting to XXXX [YYYY.YYY.YYY.YYY] port 22.
debug1: Connection established.
debug1: identity file /nas/kuba/.ssh/id_dsa type -1
                      ^^^^^^^^^^

Ale mój domowy katalog wydaje się być w porządku:

$ cd ~; pwd
/Users/kuba
$ echo $HOME
/Users/kuba
Kuba
źródło
4
Byłem w stanie obejść problem. Skopiowałem zawartość ~ / .ssh do /nas/kuba/.ssh. Więc to właściwie problem z nagłym użyciem ssh przez niewłaściwy katalog domowy, co prawdopodobnie nie jest tak naprawdę problemem ssh.
Kuba
Ten ostatni komentarz byłby bardzo przydatną informacją do edycji w pytaniu.
David Z
Twoje dane wyjściowe wskazują, że korzystasz z DSA. Znalazłbym sposób na przejście na RSA, ponieważ jest to najlepszy / najnowszy i wierzę, że DSA jest zepsuty.
trysis
3
@Kuba O ile wiem, sshignoruje HOMEzmienną środowiskową. Ignorowanie złej praktyki HOMEwydaje się, że tak właśnie sshjest. Jeśli się nie stosuje HOME, jedyną znaną mi alternatywą jest sprawdzenie go z uid. Jeśli masz dwa /etc/passwdidentyczne wpisy uid, oba kończą na tym samym .ssh/configpliku, nawet jeśli mają inny dom.
kasperd
1
@kasperd, to powinna być odpowiedź. To jedyna bułka tarta na tej stronie, która pomogła w mojej sytuacji. Dzięki!
Wildcard,

Odpowiedzi:

14

Wygląda na to, że jesteś uwięziony między specyficznym dla użytkownika a globalnym ssh_config.

Sprawdź ustawienia uprawnień pliku konfiguracyjnego użytkownika ( ~/.ssh/config) i ogólnosystemowego pliku konfiguracyjnego ( /etc/ssh/ssh_config), aby uzyskać szczegółowe informacje.

Możesz przeczytać więcej na ten temat tutaj . Praktycznie wszystkie pliki w .sshkatalogu użytkownika powinny mieć rozmiar 600, a configplik 644. Można to ustawić za pomocą następujących poleceń w katalogu domowym:

chmod 600 ~/.ssh/* 
chmod 644 ~/.ssh/config
cham
źródło
Tak więc rozumiem z dokumentu, że najpierw powinien odczytać config z mojego katalogu domowego, a później z globalnego (/ etc / ssh / ssh_config) Pytanie brzmi - dlaczego opuszcza moją lokalną konfigurację?
Kuba
zaktualizowana odpowiedź powyżej
tike
Próbowałem. Nic się nie zmieniło. Zaktualizowałem moje zapytanie o więcej szczegółów.
Kuba
jeśli nie zmieniłeś drastycznie powyższego pytania podczas edycji: debug1: /Users/kuba/.ssh/config wiersz 1: Zastosowanie opcji dla * debug1: /Users/kuba/.ssh/config wiersz 39: Zastosowanie opcji dla bio jego konfiguracji odczytu, a twoja karta symboliczna wydaje się odgrywać rolę. Chciałbym zachować prosty plik konfiguracyjny, aby najpierw przetestować ze zdefiniowanym portem i serwerem docelowym.
tike
Właściwie drastycznie zmieniłem pytanie do tego stopnia, że ​​prawdopodobnie powinienem je zamknąć. Wygląda na to, że ssh traktuje inny katalog jak mój folder domowy. Coś, co nie jest ani ~, ani $ HOME.
Kuba
3

sprawdź uprawnienia

ls -lsd ~/.ssh

i

ls -ls ~/.ssh/*

Jeśli uprawnienia są złe, klient ssh nie będzie próbował z niego odczytać

Mikrofon
źródło
0 drwx ------ 9 kuba /Users/kuba/.ssh 8 -rwx ------ 1 kuba /Users/kuba/.ssh/config wygląda na to, że jestem ich właścicielem
Kuba
@Kuba spróbuj z ls -la ~ / .ssh /
c4f4t0r
ls -la ~ / .ssh razem 80 drwx ------ 9 kuba 1029 306 1 lipca 16:33. drwx ------ + 42 kuba 1029 1428 1 lipca 33 16:33 -rw-r - r-- 1 kuba 1029 406 7 maja 14:53 klucze autoryzowane -rwx ------ 1 kuba 1029 1528 15 maja 13:07 config -rwx ------ 1 kuba 1029 1675 7 maja 14:53 id_rsa -rwx ------ 1 kuba 1029 406 7 maja 14:53 id_rsa.pub -rw-r-- r-- 1 kuba 1029 16049 22 maja 09:36 znane_hostowie
Kuba
@ czy jesteś pewien, że użytkownik domowy nie może otworzyć?
c4f4t0r
2
To + tam ... czy to nie ACL? To może być sprawca?
Jorge Suárez de Lis
0

Miałem ten sam problem i byłem w stanie go naprawić, ustawiając flagę + x na moim katalogu ~/.ssh(0700), a także ustawiając 0600 na ~/.ssh/config.

dAngelov
źródło
0

Miałem ten sam problem i naprawiłem go, zmuszając ssh do ponownego utworzenia .sshfolderu (wystarczy zmienić nazwę sshi wykonać polecenie ssh), a następnie skopiować potrzebne pliki, z odpowiednimi uprawnieniami. (konfiguracja z 600).

Najwyraźniej ssh staje się podejrzane, jeśli folder .sshzostanie zmodyfikowany w sposób, który nie akceptuje ...

capstain
źródło
0

SSH nie odczyta konfiguracji lokalnej, jeśli jest ona zainstalowana w systemie plików zamontowanym przez NFS. Warto to sprawdzić, ponieważ wszystkie uprawnienia mogą być w porządku, a SSH (przynajmniej wersja 6.6) nie daje żadnych wskazówek, dlaczego nie czyta konfiguracji użytkownika. (Jeśli jednak skorzystasz z tej -Fopcji , przeczyta go z wolumenu NFS ).

Curt J. Sampson
źródło
0

Ten sam problem napotkałem na komputerach MacO. Patrząc na informacje o debugowaniu ręcznego logowania (ssh @), dowiedziałem się, że najwyraźniej ssh myślał, że mój katalog domowy jest /srv/home/<userid>i szukał tam .sshkatalogu, i zignorowałem ten w/Users/<userid>/.ssh/

Prawdopodobnie ma to coś wspólnego z pracą nad konfigurowaniem komputerów Mac w określony sposób, ale zalecam sprawdzenie tego, ssha system operacyjny zgadza się, gdzie znajduje się katalog domowy;)

chw21
źródło
0

Jak wskazał „kasperd” w swoim komentarzu do pytania, zauważ, że sshniekoniecznie będzie szukał „$ {HOME} / .ssh / config”. Jak stwierdzono, ważne jest, aby kopać głębiej i dowiedzieć się, gdzie znajdował się katalog domowy w czasie logowania, a przed założeniem nowego HOME.

Wskazówka do przejrzenia wyników ssh -xvvvF ~/.ssh/config serverbyła bardzo wnikliwa, pomagając odpowiedzieć na to samo pytanie. Po znalezieniu się w systemie, w którym dwie różne nazwy użytkowników mają ten sam identyfikator UID w pliku „/ etc / passwd”, napotkano ten problem. Dwaj użytkownicy mają różne katalogi HOME ustawione w „/ etc / passwd”.

W takim scenariuszu okazuje się, że jeśli ktoś jest zalogowany jako drugi użytkownik ze zduplikowanym UID w pliku „/ etc / passwd”, sshkorzysta z katalogu domowego pierwszego użytkownika z pasującym UID użytkownika uruchamiającego SSH Komenda.

To prawda, że ​​ten przypadek użycia jest dość dziwny i nie pomoże większości ludzi, ale tak się naprawdę stało, a to pytanie pomogło rozwiązać problem.

kbulgrien
źródło
0

Było to spowodowane ustawieniami uprawnień do plików.

Sprawdź .sshuprawnienia do katalogu i plików, sprawdź także ustawienia uprawnień do domowego katalogu.

Dla mnie nie chcę, aby inni widzieli moje osobiste pliki, więc usuwam xpozwolenie z moich domów reż. Co prowadzi ssh do znalezienia autoryzowanych kluczy do niewłaściwej ścieżki.

Jednym ze sposobów rozwiązania tego problemu było ustawienie innej ścieżki uprawnień /etc/ssh/sshd_config, na przykład:

AuthorizedKeysFile .ssh / autoryzowane_klucze / etc / ssh / autoryzowane_klucze

następnie skopiuj swój pub do /etc/ssh/authorized_keys, pracował dla mnie.

Sójka
źródło