Konfigurasi SSH: mengganti nama pengguna default

271

Apakah mungkin mengkonfigurasi sshuntuk mengetahui nama pengguna saya?

Secara default ia menggunakan nama pengguna saat ini, yang tidak benar dalam kasus saya.

Saya menggunakan laptop peminjam, dan nama pengguna saya loaner, tetapi saya ingin memberi tahu sshbahwa nama pengguna saya buck.

Poin bonus: nama pengguna saya di rumah adalah bgolemon. Jika saya bisa mengonfigurasi nama pengguna per-host, itu akan menjadi lebih baik.

bukzor
sumber
3
Stack Overflow adalah situs untuk pertanyaan pemrograman dan pengembangan. Pertanyaan ini tampaknya di luar topik karena ini bukan tentang pemrograman atau pengembangan. Lihat Topik apa yang bisa saya tanyakan di sini di Pusat Bantuan. Mungkin Super User atau Unix & Linux Stack Exchange akan menjadi tempat yang lebih baik untuk bertanya. Lihat juga Di mana saya mengirim pertanyaan tentang Dev Ops?
jww
3
Ini pertanyaan yang bagus!
Nicolas S.Xu
jawaban yang diterima di sini adalah kualitas yang lebih baik daripada yang superuser: termasuk penggunaan direktif pengguna global (default) dan komentar ditambahkan membuat prioritas direktif jelas
Rondo

Jawaban:

449

Buat file bernama configinside ~/.ssh. Di dalam file Anda dapat menambahkan:

Host *
    User buck

Atau tambahkan

Host example
    HostName example.net
    User buck

Contoh kedua akan menetapkan nama pengguna dan spesifik hostname, sedangkan contoh pertama hanya menetapkan nama pengguna. Dan ketika Anda menggunakan yang kedua Anda tidak perlu menggunakan ssh example.net; ssh exampleakan cukup.

Learath2
sumber
134
Mungkin perlu ditunjukkan bahwa menurut man ssh_config: Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.Jadi Host *bagian mungkin harus pergi pada bagian akhir.
quodlibetor
9
Perlu dicatat bahwa file konfigurasi akan diproses secara top-to-bottom, mengisi setiap bidang (Pengguna, HostName ...) dan melewatkan bidang berulang jika beberapa arahan Host dicocokkan. Jika anda mendefinisikan Host *, User jdoedi bagian atas, dan kemudian menentukan Host example, HostName abc.example.com, User root, berusaha ssh exampleakan sama seperti jika Anda masuk ssh [email protected]. Untuk mendefinisikan default ssh (mis. User root), Host *Direktif harus ada di bagian bawah file config.
mr.b
17
Juga, jangan lupa chmod 600 di .ssh / config
Sven
Perhatikan bahwa jika ada beberapa nama host yang dapat diakses oleh server (atau jika Anda ingin nama pengguna default yang sama untuk banyak server), Anda harus mengubah baris pertama Host server1.local example.net *.example.orgdan hanya menyingkirkan HostNamebaris.
Lèse majesté
44

Jika Anda hanya ingin melakukan ssh beberapa kali, seperti pada komputer yang dipinjam atau dibagikan, cobalah:

ssh buck@hostname

atau

ssh -l buck hostname
gpojd
sumber
1
Terima kasih, tapi saya sudah terbiasa dengan ini. Tampaknya berlebihan untuk menentukan buck @ host ketika selalu buck @ host. Saya mencoba menemukan metode untuk mewakili informasi ini dalam file konfigurasi.
bukzor
1
Sudahkah Anda menganggap sesuatu yang sederhana seperti alias sshhostname = 'ssh buck @ hostname'?
gpojd
Ya saya punya. Jawaban Learath2 adalah persis apa yang saya cari. Saya dapat memeriksa ini di repositori dotfiles saya dan tidak pernah kuatir tentang hal itu lagi.
bukzor
Saya mengambil alias root karena saya terhubung ke mesin untuk klien yang berbeda, di mana nama pengguna saya berbeda di setiap lingkungan klien. Pendekatan lain saya kira akan memiliki lingkungan shell lokal yang berbeda untuk mengatur ssh dan pengaturan terkait untuk setiap klien. Atau VM per klien.
Nick Spacek
6

man ssh_config kata

Pengguna

Menentukan pengguna untuk login sebagai. Ini bisa bermanfaat ketika nama pengguna yang berbeda digunakan pada mesin yang berbeda. Ini menghemat kesulitan karena harus mengingat untuk memberikan nama pengguna pada baris perintah.

nes1983
sumber
1
"Identitas" dalam hal ini setara dengan penggunaan "kata sandi" yang biasa. Ini adalah data yang mengotentikasi Anda, tetapi tidak membantu menentukan siapa Anda mencoba untuk mengotentikasi sebagai .
bukzor
Ups. Ada pengaturan pengguna di sana juga.
nes1983
0

Anda bisa menggunakan jalan pintas. Buat file .bashrc di direktori home Anda. Di sana, Anda dapat menambahkan yang berikut ini:

alias sshb="ssh buck@host"

Untuk membuat alias tersedia di terminal Anda, Anda dapat menutup dan membuka terminal Anda, atau menjalankan

source ~/.bashrc

Kemudian Anda dapat terhubung dengan hanya mengetik:

sshb
Frank Forte
sumber
1
Ini bagus untuk satu host tertentu, tetapi karena saya terus terhubung ke satu triliun server yang berbeda, ini agak tidak berguna. Alih-alih mengatur .ssh/configdengan pengaturan yang sesuai. Saya datang mencari *perawatan liar (dan mengetahui bahwa itu harus di bagian bawah).
mazunki
0

Ada permata Ruby yang menghubungkan sshfile konfigurasi Anda yang disebut sshez.

Yang harus Anda lakukan adalah sshez <alias> [email protected] -p <port-number>, dan kemudian Anda dapat terhubung menggunakan ssh <alias>. Ini juga berguna karena Anda dapat membuat daftar alias Anda menggunakan sshez listdan dapat dengan mudah menghapusnya menggunakan sshez remove alias.

Oss
sumber