Salin kunci ssh ke komputer lain sehingga saya dapat menggunakan GitHub di sana?

12

Saya memiliki server jarak jauh. Saya sudah berhasil ssh ke server jauh - kunci saya ada di authorized_keysserver 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.publangsung 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
Richard
sumber
Saya baru saja mencoba mengatur penerusan ssh agent, menggunakan alamat IP server saya: developer.github.com/guides/using-ssh-agent-forwarding Tapi saya masih Permission denied (publickey)menggunakan mesin jarak jauh.
Richard
1
ada opsi verbose pada perintah ssh, saya pikir itu mungkin memberi tahu Anda file kunci mana yang benar-benar mencoba, itu telah membantu saya beberapa kali.
Allman

Jawaban:

4

yang id_rsa.pubdapat 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_keys2pada beberapa sistem). Satu kunci di setiap baris, dalam format ini:

ssh-rsa AAAIHAVEREMOVEDTHEMAJORITYOFTHEKEYBECAUSEISEENONEEDTOPOSTTHATWALLOFTEXTHERE9yfRjxw== jarmund@jarmint

Untuk mencapai ini, setelah Anda menyalinnya, cukup tambahkan ke authorized_keysfile seperti ini:cat id_rsa.pub >> ~/.ssh/authorized_keys

Sebagian besar sistem waras akan menolak untuk mengizinkan Anda menggunakan login berbasis kunci jika .sshfolder tersebut memiliki izin yang terlalu longgar. Folder seharusnya 700, jadi jika Anda masih mengalami masalah:chmod 700 ~/.ssh

Selain itu, file dalam .sshfolder harus 600:chmod 600 ~/.ssh


Edit 1:

File itu sendiri, id_rsa.pubtidak diperlukan sendiri di server jauh. Hanya isinya, sebagai bagian dari authorized_keys. Saya sarankan menjalankan ssh -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:

debug1: Offering RSA public key: /home/jarmund/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535

Hal-hal yang perlu diperiksa:

  • Pastikan salah satu kunci privat adalah yang cocok dengan kunci publik yang Anda tambahkan ke remote authorized_keys
  • Pastikan bahwa kunci cocok dengan nama pengguna yang Anda coba masuki (harus menjadi bagian terakhir dari kunci publik)
  • Coba ganti nama authorized_keysmenjadiauthorized_keys2
Jarmund
sumber
Terima kasih. Kunci publik saya terdaftar di ~/.ssh/authorized_keyspada server jarak jauh - Saya telah menambahkannya menggunakan cat ~/.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_keystetapi masih mendapatkan Permission denied (publickey)ketika saya mencoba ssh ke github. Haruskah saya menyalin seluruh id_rsa.pubfile ke mesin jarak jauh juga?
Richard
@ Richard Anda tidak perlu file itu sendiri di sana, tidak. Meskipun saya suka menyimpannya di folder .ssh kalau-kalau saya membutuhkannya. Tapi itu tidak diperlukan, itu hanya sesuatu yang saya lakukan. Saya akan merekomendasikan menjalankan sshperintah yang dijelaskan dalam pertanyaan Anda dengan -vsakelar untuk melihat dengan tepat izin yang ssh dikeluhkan.
Jarmund
Terima kasih telah mengedit 2. Saya tidak yakin bagaimana melakukan poin pertama - check that one of the private keys...- apa yang harus saya lakukan di sini?
Richard
Pada poin 2, maksud Anda kunci harus sesuai dengan nama pengguna GitHub saya? Itu tidak terlihat seperti itu :)
Richard
Masalahnya adalah saya dapat menggunakan kunci publik yang sama ini untuk ssh dan menarik dari GitHub dari mesin lokal saya, jadi GitHub pasti berpikir tidak apa-apa ...?
Richard
2
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

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:

ssh -i /path/to/some_key -Tv [email protected]
Kenster
sumber
File kunci tidak ada di server jarak jauh dari mana saya mencoba ssh ke github, tetapi ada di authorized_keys. Apakah ini cukup atau apakah saya perlu menyalin file kunci di sana juga?
Richard
1
authorized_keysuntuk 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.
Kenster
Bendera -i membantu saya memecahkan masalah! Saya menyalin folder ssh ke komputer lain dan mencoba menggunakan remote git, tetapi ditolak. -Saya menyelamatkan hari!
pauljohn32
2

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.

pengguna2313067
sumber
0

Anda bisa langsung menempatkan perintah.

$ cat ~ / .ssh / id_rsa.pub

jika Anda memiliki kunci ssh yang sudah ada maka akan ditampilkan. Kalau tidak, itu memberikan kesalahan. Anda perlu menambahkan kunci baru.

Gauravsingh Patil
sumber