GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengkonfigurasi SSH agar tidak mencoba semua file identitas secara otomatis?

Anda dapat menggunakan IdentitiesOnly=yes opsi bersama dengan IdentityFile (lihat halaman manual ssh_config). Dengan begitu, Anda dapat menentukan file mana yang harus dicari.

Dalam contoh ini, ssh hanya lihat identitas yang diberikan dalam file ssh_config + 4 yang tercantum pada baris perintah (identitas yang diberikan oleh agen akan diabaikan):

ssh -o IdentitiesOnly=yes \
    -o IdentityFile=id1.key \
    -o IdentityFile=id2.key \
    -i id3.key \
    -i id4.key \
    [email protected]

Formulir -i dan -o IdentityFile= dapat dipertukarkan.

Di .ssh/config , Anda dapat menyertakan konfigurasi seperti ini:

Host example
User user123
Hostname example.com
IdentityFile ~/.ssh/id_rsa_example
IdentityFile ~/.ssh/id_rsa_example2
IdentitiesOnly yes

jawaban singkat user76528 benar, tetapi saya baru saja mengalami masalah ini dan berpikir beberapa penjabaran akan berguna. Anda mungkin juga peduli dengan solusi ini jika bertanya-tanya "Mengapa ssh mengabaikan opsi konfigurasi file identitas saya"?

Pertama, tidak seperti opsi lain di ssh_config, ssh tidak menggunakan IdentityFile pertama yang ditemukannya. Sebaliknya IdentityFile opsi menambahkan file itu ke daftar identitas yang digunakan. Anda dapat menumpuk beberapa IdentityFile opsi, dan klien ssh akan mencoba semuanya sampai server menerima satu atau menolak koneksi.

Kedua, jika Anda menggunakan ssh-agent, ssh akan secara otomatis mencoba menggunakan kunci di agen, bahkan jika Anda belum menentukannya dengan opsi IdentityFile (atau -i) ssh_config. Ini adalah alasan umum Anda mendapatkan Too many authentication failures for user kesalahan. Menggunakan IdentitiesOnly yes opsi akan menonaktifkan perilaku ini.

Jika Anda ssh sebagai banyak pengguna ke banyak sistem, saya sarankan untuk meletakkan IdentitiesOnly yes di bagian global ssh_config Anda, dan letakkan setiap IdentityFile dalam subbagian Host yang sesuai.


Saya biasanya melakukannya seperti ini:

$ ssh -o IdentitiesOnly=yes -F /dev/null -i ~/path/to/some_id_rsa [email protected]

Opsinya adalah sebagai berikut:

  • -o IdentitiesOnly=yes - memberi tahu SSH untuk hanya menggunakan kunci yang disediakan melalui CLI dan tidak ada dari $HOME/.ssh atau melalui ssh-agent
  • -F /dev/null - menonaktifkan penggunaan $HOME/.ssh/config
  • -i ~/path/to/some_id_rsa - kunci yang secara eksplisit ingin Anda gunakan untuk koneksi

Contoh

$ ssh -v -o IdentitiesOnly=yes -F /dev/null -i ~/my_id_rsa [email protected]
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /dev/null
debug1: Connecting to someserver.mydom.com [10.128.12.124] port 22.
debug1: Connection established.
debug1: identity file /Users/sammingolelli/my_id_rsa type 1
debug1: identity file /Users/sammingolelli/my_id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA f5:60:30:71:8c:a3:da:a3:fe:b1:6d:0b:20:87:23:e1
debug1: Host 'someserver' is known and matches the RSA host key.
debug1: Found key in /Users/sammingolelli/.ssh/known_hosts:103
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/sammingolelli/my_id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to someserver.mydom.com ([10.128.12.124]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
Last login: Tue Dec  8 19:03:24 2015 from 153.65.219.15
someserver$

Perhatikan pada output di atas bahwa ssh hanya mengidentifikasi my_id_rsa kunci pribadi melalui CLI dan menggunakannya untuk terhubung ke beberapa server.

Khususnya bagian ini:

debug1: identity file /Users/sammingolelli/my_id_rsa type 1
debug1: identity file /Users/sammingolelli/my_id_rsa-cert type -1

dan:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/sammingolelli/my_id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).

Linux
  1. Bagaimana Cara Mengubah Ekstensi Banyak File?

  2. Bagaimana Mendeteksi Jika Shell Dikendalikan Dari Ssh?

  3. Bagaimana Mengganti Satu Char Dengan Yang Lain Di Semua Nama File Direktori Saat Ini?

  1. Bagaimana mengubah identitas sistem Linux

  2. Bagaimana menemukan semua file yang jarang di Linux

  3. Cara mendapatkan semua file yang melebihi ukuran tertentu dan menghapusnya

  1. Bagaimana Mengkonfigurasi Bashrc Untuk Menutup Semua Sesi Tmux Saat Saya Menutup Terminal?

  2. Bagaimana saya bisa mengedit semua file yang dikembalikan oleh find in vi di Linux?

  3. Bagaimana cara menjalankan perintah secara otomatis pada login SSH?