Saya memiliki server jarak jauh. Saya sudah berhasil ssh ke server jauh - kunci saya ada di authorized_keys
server jauh.
Sekarang saya ingin menarik dari GitHub langsung ke server jarak jauh itu. Tapi saya mengerti permission denied (publickey)
ketika saya mencoba ssh -T [email protected]
di server jauh.
Haruskah saya menyalin id_rsa.pub
langsung dari mesin lokal saya ke server jarak jauh, atau berbahaya?
Jika ini jawabannya, apa cara terbaik untuk melakukannya?
Atau haruskah saya membuat kunci publik baru di server jarak jauh, dan menambahkannya ke github acocount saya?
MEMPERBARUI:
Ini output dari ssh verbose:
~$ ssh -Tv [email protected]
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.ssh/known_hosts:1
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
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication
Permission denied (publickey)
menggunakan mesin jarak jauh.Jawaban:
yang
id_rsa.pub
dapat disalin di mana saja tanpa bahaya nyata untuk itu. Ini adalah kunci publik Anda, dan dimaksudkan untuk hal-hal seperti ini. Ini adalah setengah dari keypair, dan membaginya dengan tempat-tempat yang ingin Anda akses adalah bagaimana Anda mengizinkan kunci pribadi berfungsi.Untuk memungkinkan masuk jarak jauh, kunci publik Anda harus terdaftar di
authorized_keys
(authorized_keys2
pada beberapa sistem). Satu kunci di setiap baris, dalam format ini:Untuk mencapai ini, setelah Anda menyalinnya, cukup tambahkan ke
authorized_keys
file seperti ini:cat id_rsa.pub >> ~/.ssh/authorized_keys
Sebagian besar sistem waras akan menolak untuk mengizinkan Anda menggunakan login berbasis kunci jika
.ssh
folder tersebut memiliki izin yang terlalu longgar. Folder seharusnya700
, jadi jika Anda masih mengalami masalah:chmod 700 ~/.ssh
Selain itu, file dalam
.ssh
folder harus 600:chmod 600 ~/.ssh
Edit 1:
File itu sendiri,
id_rsa.pub
tidak diperlukan sendiri di server jauh. Hanya isinya, sebagai bagian dariauthorized_keys
. Saya sarankan menjalankanssh -vT [email protected]
untuk mengaktifkan logging verbose, sehingga Anda dapat melihat dengan tepat izin apa yang dikeluhkannya.Edit 2:
Ini berarti bahwa tidak ada kunci yang ditawarkan cocok dengan apa yang dimiliki server jauh pada file. Yang ingin Anda lihat adalah sesuatu seperti ini:
Hal-hal yang perlu diperiksa:
authorized_keys
authorized_keys
menjadiauthorized_keys2
sumber
~/.ssh/authorized_keys
pada server jarak jauh - Saya telah menambahkannya menggunakancat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys"
. Kemudian sshed ke remote dan berlari~$ chmod 700 ~/.ssh
dan$ chmod 600 ~/.ssh/authorized_keys
tetapi masih mendapatkanPermission denied (publickey)
ketika saya mencoba ssh ke github. Haruskah saya menyalin seluruhid_rsa.pub
file ke mesin jarak jauh juga?ssh
perintah yang dijelaskan dalam pertanyaan Anda dengan-v
sakelar untuk melihat dengan tepat izin yang ssh dikeluhkan.check that one of the private keys...
- apa yang harus saya lakukan di sini?Menurut Anda men-debug jejak, tidak ada file kunci ini yang benar-benar ada di sistem lokal, dan ssh tidak benar-benar menawarkan kunci apa pun ke server jauh. Pastikan kunci yang ingin Anda gunakan benar-benar ada pada host tempat Anda menjalankan ssh, dan bahwa file tersebut memiliki nama yang tepat. Jika Anda ingin menggunakan file kunci selain dari salah satu file default, Anda harus menentukannya di baris perintah ssh:
sumber
authorized_keys
. Apakah ini cukup atau apakah saya perlu menyalin file kunci di sana juga?authorized_keys
untuk kunci publik yang akan diterima untuk koneksi masuk . Anda memerlukan salinan file kunci pribadi untuk membuat koneksi keluar ke host lain. Jadi ya, salah satu file kunci itu (id_rsa, dll.) Harus ada di host tempat Anda menjalankan ssh.Server memerlukan kunci pribadi Anda untuk mengautentikasi ke Github. Kunci publik Anda, seperti namanya, dianggap publik sehingga tidak cukup untuk mengotentikasi.
Jika Anda tidak perlu menggunakan Github pada server jarak jauh tanpa terhubung melalui ssh, Anda harus menggunakan penerusan ssh-agent. Panduan untuk itu tersedia di Github: https://developer.github.com/guides/using-ssh-agent-forwarding/ .
Jika tidak, Anda harus membuat kunci baru dan menautkannya ke akun Anda.
sumber
Anda bisa langsung menempatkan perintah.
jika Anda memiliki kunci ssh yang sudah ada maka akan ditampilkan. Kalau tidak, itu memberikan kesalahan. Anda perlu menambahkan kunci baru.
sumber