Orada GitHub kullanabilmek için ssh anahtarını başka bir makineye kopyalansın mı?


12

Uzak bir sunucum var. Bu uzak sunucuya başarıyla ssh yapabilirim - anahtarım authorized_keysuzak sunucuda.

Şimdi GitHub'dan doğrudan o uzak sunucuya çekmek istiyorum. Ama uzak sunucuda permission denied (publickey)denediğimde alıyorum ssh -T git@github.com.

id_rsa.pubDoğrudan yerel makinemden uzak sunucuya kopyalamalı mıyım yoksa bu tehlikeli midir?

Cevap buysa, bunu yapmanın en iyi yolu nedir?

Yoksa uzak sunucuda yeni bir ortak anahtar oluşturmalı ve bunu github hesabıma mı eklemeliyim?

GÜNCELLEME:

İşte ayrıntılı bir ssh çıktı:

~$ ssh -Tv git@github.com
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

Sunucumun IP adresini kullanarak ssh aracı yönlendirmesini ayarlamayı denedim: developer.github.com/guides/using-ssh-agent-forwarding Ama yine Permission denied (publickey)de uzak makineye alıyorum .
Richard

1
ssh komutunda ayrıntılı bir seçenek var, sanırım aslında hangi anahtar dosyaları denediğini söyleyebilir, birkaç kez bana yardımcı oldu.
Allman

Yanıtlar:


4

id_rsa.pubbuna bir tehlike yokken yerde kopyalanabilir. Bu sizin ortak anahtarınızdır ve bunun gibi şeyler içindir. Bir anahtar çiftinin yarısıdır ve erişmek istediğiniz yerlerle paylaşmak, özel anahtarın çalışmasına nasıl izin vereceğinizdir.

Uzaktan oturum açmaya izin vermek için, genel anahtarınızın authorized_keys( authorized_keys2bazı sistemlerde) listelenmesi gerekir . Her satırda şu biçimde bir anahtar:

ssh-rsa AAAIHAVEREMOVEDTHEMAJORITYOFTHEKEYBECAUSEISEENONEEDTOPOSTTHATWALLOFTEXTHERE9yfRjxw== jarmund@jarmint

Bunu başarmak için, kopyaladığınızda, authorized_keysdosyaya şu şekilde ekleyin :cat id_rsa.pub >> ~/.ssh/authorized_keys

Birçok aklı başında sistem, .sshklasör çok gevşek izinlere sahipse, anahtar tabanlı oturum açmayı kullanmanıza izin vermez . Klasör olmalıdır 700, bu yüzden hala sorun yaşıyorsanız:chmod 700 ~/.ssh

Ayrıca, .sshklasördeki dosyalar 600 olmalıdır:chmod 600 ~/.ssh


Düzenleme 1:

Dosyanın kendisi, id_rsa.pubuzak sunucuda gerekli değildir. Bir parçası olarak sadece içerik authorized_keys. ssh -vT git@github.comTam olarak hangi izinlerden şikayet ettiğini görebilmeniz için ayrıntılı günlük kaydını etkinleştirmeyi öneririm .

Düzenleme 2:

Bu, sunulan anahtarların hiçbirinin uzak sunucunun dosyadakilerle eşleşmediği anlamına gelir. Görmek istediğiniz şey şudur:

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

Kontrol edilecek şeyler:

  • Özel anahtarlardan birinin, uzaktan kumandaya eklediğiniz genel anahtarla eşleşen anahtar olduğundan emin olun authorized_keys
  • Anahtarın, giriş yapmaya çalıştığınız kullanıcı adıyla eşleştiğinden emin olun (genel anahtarın son kısmı olmalıdır)
  • Yeniden adlandırma deneyin authorized_keysiçinauthorized_keys2

Teşekkürler. Ortak anahtarım ~/.ssh/authorized_keysuzak sunucuda listeleniyor - tuşunu kullanarak ekledim cat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys". Sonra uzaktan kumandayı sshed ve koştu ~$ chmod 700 ~/.ssh ve $ chmod 600 ~/.ssh/authorized_keysyine de gsh için Permission denied (publickey)ssh denemek olsun . Tüm id_rsa.pubdosyayı uzak makineye de mi kopyalamalıyım ?
Richard

@Richard Dosyanın kendisine gerek yok, hayır. Her ne kadar ihtiyacım olursa .ssh klasöründe tutmak istiyorum. Ama bu gerekli değil, sadece yaptığım bir şey. Ssh'ın hangi izinlerden şikayet ettiğini tam olarak görmek sshiçin sorunuzda açıklanan komutu -vanahtarla çalıştırmanızı öneririm .
Jarmund

Düzenleme için teşekkürler 2. İlk mermi noktasının nasıl yapılacağından emin değilim check that one of the private keys...- burada ne yapmalıyım?
Richard

2. noktada, anahtarın GitHub kullanıcı adımla eşleşmesi gerektiği anlamına mı geliyor? Böyle bir şey görünmüyor :)
Richard

Şey, ssh için GitHub yerel makinemden ssh almak ve çekmek için aynı ortak anahtarı kullanabilirsiniz, bu yüzden GitHub iyi olduğunu düşünmek gerekir ...?
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

Hata ayıklama izlemesine göre, bu anahtar dosyaların hiçbiri yerel sistemde mevcut değildir ve ssh uzak sunucuya gerçekte herhangi bir anahtar sunmamıştır. Kullanmak istediğiniz anahtarın ssh'yi çalıştırdığınız ana bilgisayarda olduğundan ve dosyanın doğru ada sahip olduğundan emin olun. Varsayılan dosyalardan biri dışında bir anahtar dosyası kullanmak istiyorsanız, dosyayı ssh komut satırında belirtmeniz gerekir:

ssh -i /path/to/some_key -Tv git@github.com

Anahtar dosyası github için ssh çalıştığım uzak sunucuda mevcut değil, ama içinde authorized_keys. Bu yeterli mi veya anahtar dosyasını oraya da kopyalamam gerekiyor mu?
Richard

1
authorized_keysiçindir kamu için kabul edilecek tuşları gelen bağlantıları. Başka bir ana bilgisayara giden bağlantı yapmak için özel anahtar dosyasının bir kopyasına ihtiyacınız var . Yani evet, bu anahtar dosyalardan birinin (id_rsa vb.) Ssh çalıştırdığınız ana bilgisayarda bulunması gerekir.
Kenster

-İ bayrağı bir sorunu çözmeme yardımcı oldu! Ssh klasörünü başka bir bilgisayara kopyaladım ve uzak git kullanmaya çalışıyordum, ancak reddedildi. -İ günü kurtardı!
pauljohn32

2

Sunucu, Github'da kimlik doğrulaması yapmak için özel anahtarınıza ihtiyaç duyar. Ortak anahtarınız, adından da anlaşılacağı gibi, kimlik doğrulaması için yeterli olamayacağı için genel kabul edilir.

Uzak sunucuda ssh aracılığıyla bağlanmadan Github kullanmanız gerekmiyorsa, ssh-agent iletmeyi kullanmalısınız. Bunun için bir kılavuz Github'da bulunabilir: https://developer.github.com/guides/using-ssh-agent-forwarding/ .

Aksi takdirde, yeni bir anahtar oluşturmanız ve bunu hesabınıza bağlamanız gerekir.


0

Komutu doğrudan koyabilirsiniz.

$ cat ~ / .ssh / id_rsa.pub

zaten ssh anahtarınız varsa o zaman gösterecektir. Aksi takdirde hata verir. Yeni anahtar eklemeniz gerekiyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.