ssh server jarak jauh pada beberapa port selain 22 tanpa kata sandi

16

Saya biasanya terhubung ke server jarak jauh dengan

ssh [email protected] -p 11000

dan kemudian memberikan kata sandi setiap kali untuk pengguna. Bagaimana saya harus menghindari memasukkan kata sandi setiap kali saya terhubung menggunakan ssh?

Prabesh Shrestha
sumber

Jawaban:

23

Pertama , letakkan ini di ~/.ssh/config:

Host server
HostName server.com
Port 11000
User user

Anda bisa ssh server, lalu mengetikkan kata sandi.

Kedua , periksa ~/.ssh/untuk melihat apakah Anda memiliki file bernama id_rsadan id_rsa.pub. Jika tidak, Anda tidak memiliki kunci yang diatur, jadi Anda harus membuat pasangan menggunakan ssh-keygen. Anda dapat memberikan kunci kata sandi atau tidak. File yang dihasilkan id_rsa.pubakan terlihat seperti ini:

ssh-rsa lotsofrandomtext user @ lokal

Ketiga , ssh ke server, buat file ~/.ssh/authorized_keysjika tidak ada. Kemudian tambahkan konten ~/.ssh/id_rsa.pubyang Anda buat sebelumnya di sini. Ini mungkin berarti menyalin isi file ke clipboard Anda, kemudian membuka ~/.ssh/authorized_keyseditor teks dan menempelkannya.

Atau, gunakan perintah ssh-copy-id server(ganti serverdengan nama di ~/.ssh/config). Ini akan melakukan hal yang sama seperti di atas. Kadang-kadang saya terlihat ssh-copy-idmacet, jadi saya tidak begitu menyukainya.

Anda sekarang dapat melakukan ssh dengan adil ssh server, kecuali Anda telah memilih untuk melindungi kunci pribadi Anda dengan frasa sandi. Umumnya jika Anda tidak menggunakan kata sandi, Anda harus melindungi kunci pribadi Anda dengan cara lain (misalnya enkripsi disk lengkap).

Keempat (hanya diperlukan jika Anda melindungi kunci pribadi Anda dengan frasa sandi), masukkan ini~/.bashrc :

start_ssh_agent() {
    # Try to use an existing agent
    save=~/.ssh-agent
    if [[ -e "$save" ]]
    then
        . "$save" > /dev/null
    fi
    # No existing agent, start a new one
    if [[ -z "$SSH_AGENT_PID" || ! -e "/proc/$SSH_AGENT_PID" ]]
    then
        ssh-agent > "$save"
        . "$save" > /dev/null
        ssh-add
    fi
}
start_ssh_agent

Dengan ini, Anda hanya perlu memasukkan frasa sandi satu kali per boot komputer.

phhehehe
sumber
2
'Narasi' juga harus mencakup diskusi tentang cara menghindari mengetikkan frasa sandi yang sial sepanjang waktu. :-) ssh-agent dan / atau gantungan kunci adalah kemungkinan untuk dipertimbangkan.
Faheem Mitha
1
Juga, jika nama pengguna Anda pada host jarak jauh tidak sama dengan nama pengguna Anda pada host lokal, Anda dapat menambahkan User userbaris ke ~/.ssh/config.
cjm
@Faheem Itu bagus, tapi saya tidak pernah mengatur hal seperti itu jadi saya tidak berpikir saya dapat mengajar orang lain tentang hal itu :)
phunehehe
@FaheemMitha begini :)
phunehehe
Hei, lebih baik terlambat daripada tidak sama sekali.
Faheem Mitha
7

Beralih ke otentikasi berbasis kunci .

9000
sumber
terima kasih atas sarannya. Saya telah melihat forum tetapi mengalami masalah dengan port ( 11000 bukannya 22 ). Dengan ssh -P 11000saya bisa menyalin dengan ssh. Terimakasih banyak.
Prabesh Shrestha
4

Sebagai pelengkap jawaban phunehehe, lihat Panduan Keychain Gentoo Linux untuk panduan gantungan kunci . gantungan kunci juga menggunakan ssh-agent . Daemon ssh-agent membuat frasa sandi tersedia (menjadi tidak tersedia ketika daemon ssh-agent meninggal) tetapi gantungan kunci reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in, untuk mengutip panduan.

Faheem Mitha
sumber