ssh tidak lagi menggunakan ~ / .ssh / config

20

Saya tidak bisa ssh apapun yang saya bisa. Setelah menggali sedikit saya menemukan bahwa itu tidak membaca ssh config dari direktori home saya.

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

Saat berada di komputer teman yang identik, di mana semuanya berfungsi akan terlihat seperti ini:

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

Ini bekerja lebih awal dan saya tidak mengetahui apa pun yang bisa saya lakukan untuk menyebabkan masalah ini. Bagaimana ini bisa terjadi, dan bagaimana cara memperbaikinya?

Dalam tautan dokumentasi yang ditunjukkan oleh tike, disebutkan bahwa

Karena potensi penyalahgunaan, file ini harus memiliki izin ketat: baca / tulis untuk pengguna, dan tidak dapat diakses oleh orang lain.

Izin saya adalah:

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

Saya pikir masalahnya mungkin dengan kebingungan tentang direktori home. Ketika saya memaksakan file konfigurasi lokal mulai berfungsi, dan kemudian tiba-tiba mulai membaca dari/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
                      ^^^^^^^^^^

Tapi dir home saya tampaknya diatur ok:

$ cd ~; pwd
/Users/kuba
$ echo $HOME
/Users/kuba
Kuba
sumber
4
Saya bisa menyelesaikan masalah. Saya menyalin konten ~ / .ssh ke /nas/kuba/.ssh. Jadi sebenarnya masalah dengan ssh tiba-tiba menggunakan direktori home yang salah, yang mungkin bukan masalah ssh.
Kuba
Komentar terakhir itu akan menjadi informasi yang sangat berguna untuk diedit ke dalam pertanyaan.
David Z
Output Anda menunjukkan Anda menggunakan DSA. Saya akan menemukan cara untuk beralih ke RSA, karena ini adalah yang terbaik / terbaru & saya percaya DSA rusak.
trysis
3
@ Kuba Sejauh yang saya tahu sshmengabaikan HOMEvariabel lingkungan. Adalah praktik yang buruk untuk diabaikan HOME, tampaknya itulah yang sshterjadi. Jika tidak digunakan HOME, satu - satunya alternatif yang saya ketahui adalah mencarinya dari menu uid. Jika Anda memiliki dua entri /etc/passwddengan identik uid, maka keduanya akan berakhir menggunakan .ssh/configfile yang sama bahkan jika mereka memiliki rumah yang berbeda.
kasperd
1
@kasperd, itu harus menjadi jawaban. Hanya remah roti pada halaman ini yang membantu situasi saya . Terima kasih!
Wildcard

Jawaban:

14

Anda tampaknya terjebak di antara pengguna tertentu vs ssh_config global.

Silakan periksa pengaturan izin file konfigurasi pengguna Anda ( ~/.ssh/config) dan file konfigurasi seluruh sistem Anda ( /etc/ssh/ssh_config) untuk memahami lebih detail.

Anda dapat membaca lebih lanjut tentang ini di sini . Secara praktis, semua file di bawah .sshdirektori berbasis pengguna Anda harus di 600, dan configfile harus di 644. Anda dapat mengatur ini dengan perintah berikut di direktori home Anda:

chmod 600 ~/.ssh/* 
chmod 644 ~/.ssh/config
anak nakal
sumber
Jadi saya mengerti dari dokter bahwa pertama-tama harus membaca config dari direktori home saya, dan kemudian dari global (/ etc / ssh / ssh_config) Pertanyaannya adalah - mengapa ia mengabaikan konfigurasi lokal saya?
Kuba
jawaban yang diperbarui di atas
tike
Saya mencoba. Tidak ada yang berubah. Saya memperbarui pertanyaan saya dengan lebih detail.
Kuba
jika Anda tidak mengubah pertanyaan di atas secara drastis saat mengedit: debug1: /Users/kuba/.ssh/config baris 1: Menerapkan opsi untuk * debug1: /Users/kuba/.ssh/config baris 39: Menerapkan opsi untuk konfigurasi bacaan bio, dan wildcard konfigurasi Anda tampaknya berperan. Saya akan menyimpan file konfigurasi sederhana untuk menguji terlebih dahulu dengan port dan server dest yang ditentukan.
tike
Sebenarnya saya mengubah pertanyaan secara drastis sampai saya harus menutupnya. Tampaknya ssh memperlakukan direktori lain sebagai folder rumah saya. Sesuatu yang tidak ~, atau $ RUMAH.
Kuba
3

periksa izin

ls -lsd ~/.ssh

dan

ls -ls ~/.ssh/*

Jika izinnya buruk maka klien ssh tidak akan mencoba membacanya

Mike
sumber
0 drwx ------ 9 kuba / Pengguna / kuba/.ssh 8 -rwx ------ 1 kuba / Pengguna / kuba/.ssh/config sepertinya saya pemilik semuanya
Kuba
@Kuba coba dengan ls -la ~ / .ssh /
c4f4t0r
ls -la ~ / .ssh total 80 drwx ------ 9 kuba 1029 306 1 Jul 16:33. drwx ------ + 42 kuba 1029 1428 1 Jul 16 16:33 .. -rw-r - r-- 1 kuba 1029 406 7 Mei 7:53:53 berwenang_keys -rwx ------ 1 kuba 1029 1528 15 Mei 13:07 config -rwx ------ 1 kuba 1029 1675 7 Mei 14:53 id_rsa -rwx ------ 1 kuba 1029 406 7 Mei 7 14:53 id_rsa.pub -rw-r-- r-- 1 kuba 1029 16049 22 Mei 09:36 known_hosts
Kuba
@Apakah Anda yakin, Anda pengguna dir home tidak membuka?
c4f4t0r
2
Itu + di sana ... bukankah itu ACL? Itu mungkin pelakunya?
Jorge Suárez de Lis
0

Saya memiliki masalah yang sama dan saya bisa memperbaikinya dengan mengatur + x flag pada ~/.sshdir saya (0700), sementara juga mengatur 0600 aktif ~/.ssh/config.

dAngelov
sumber
0

Untuk apa nilainya, saya memiliki masalah yang sama dan memperbaikinya dengan membuat ssh untuk membuat lagi .sshfolder (cukup ganti nama sshdan jalankan beberapa perintah ssh), dan menyalin file yang diperlukan setelahnya, dengan izin yang sesuai. (konfigurasi dengan 600).

Rupanya ssh menjadi mencurigakan jika foldernya .sshdiubah dengan cara yang tidak disetujui ...

capstain
sumber
0

SSH tidak akan membaca konfigurasi lokal jika itu pada sistem file yang dipasang NFS. Ini perlu diperiksa karena semua izin bisa saja dan SSH (setidaknya versi 6.6) tidak akan memberi Anda indikasi mengapa itu tidak membaca konfigurasi pengguna. (Akan, bagaimanapun, membacanya dari volume NFS jika Anda menggunakan -Fopsi.)

Curt J. Sampson
sumber
0

Saya mengalami masalah yang sama pada MacO. Dari melihat info debug login manual (ssh @), saya menemukan bahwa ternyata ssh berpikir bahwa direktori home saya sedang /srv/home/<userid>dan sedang mencari .sshdirektori di sana, dan mengabaikan yang ada di/Users/<userid>/.ssh/

Mungkin ada hubungannya dengan pekerjaan mengatur Mac dengan cara tertentu, tapi saya sarankan memeriksa itu sshdan Sistem Operasi menyetujui di mana direktori home;)

chw21
sumber
0

Seperti 'kasperd' ditunjukkan dalam komentarnya pada pertanyaan, perhatikan bahwa sshtidak perlu mencari '$ {HOME} /. Ssh / config'. Seperti yang ditemukan, penting untuk menggali lebih dalam dan mempelajari di mana direktori home berada pada saat login dan sebelum HOME baru dinyatakan.

Petunjuk untuk melihat ke luar dari hasil ssh -xvvvF ~/.ssh/config serverini sangat mendalam dalam membantu menjawab pertanyaan yang sama ini. Setelah menemukan diri sendiri pada sistem di mana dua nama pengguna yang berbeda memiliki UID yang sama di file '/ etc / passwd', masalah ini muncul. Kedua pengguna memiliki direktori HOME berbeda yang diatur dalam '/ etc / passwd'.

Dalam skenario seperti itu, ternyata jika seseorang masuk sebagai pengguna kedua dengan duplikat UID dalam file '/ etc / passwd', sshgunakan direktori home dari pengguna pertama dengan UID yang cocok dari pengguna yang menjalankan SSH perintah.

Memang, use case ini cukup aneh, dan tidak akan membantu bagi sebagian besar orang, tetapi itu benar-benar terjadi, dan Tanya Jawab ini membantu menyelesaikan masalah.

kbulgrien
sumber
0

Ini disebabkan oleh pengaturan izin file.

Periksa .sshdir dan file Anda izin, juga periksa pengaturan izin dir home Anda.

Bagi saya, saya tidak ingin orang lain melihat file pribadi saya, jadi saya menghapus xizin dir rumah saya. Yang mengarahkan ssh untuk menemukan kunci yang diotorisasi ke jalur yang salah.

Salah satu cara untuk memperbaikinya adalah dengan menetapkan jalur otoritas lain /etc/ssh/sshd_config, misalnya:

AuthorizedKeysFile .ssh / Authorized key / etc / ssh / Authorized key

kemudian salin pub Anda ke /etc/ssh/authorized_keys, bekerja untuk saya.

Jay
sumber