başka bir kullanıcı adı için şifresiz ssh?


14

Bir yıkım projesi için şifresiz bir ssh bağlantısı yapmak istiyorum. Şu anda ssh + svn kullanıyorum ve biraz can sıkıcı, çünkü sunucuyla işlem yapmak istediğim zaman şifreyi yazmam gerekiyor.

Web'de şifresiz ssh için bir anahtarın nasıl oluşturulacağı hakkında birkaç öğretici buldum, ancak hepsi ev sistemim için olduğum gibi uzak sistemde aynı kullanıcı adını kullandığımı varsayıyorlar. Ancak, ssh + svn için kullandığım kullanıcı adı, çalıştırdığım sistemdeki kullanıcı hesabı adından farklı. Bunu nasıl doğru şekilde ayarlayabilirim? Sadece anahtar dosyasındaki ismi değiştirerek şansım olmadı.

Yanıtlar:


15

Komutta diğer sistemin kullanıcı adını girmeniz svnyeterlidir:

$ svn co svn+ssh://otheruser@othersystem/path/to/repo

Sorunuzun başlığını da cevaplamak için:

$ ssh otheruser@othersystem

Bu sshd, uzak makinede ~otheruser/.ssh/authorized_keyskomutu yazdığınız makinedeki özel anahtara karşılık gelen genel anahtarı aramasına neden olur .


1
Talimatların bir kısmı bir dosya yapmak .ssh/id_rsa.pubve uzak sunucuya yüklemekti. Bunu yaptığımda, localusername @ localsystem ile sona erdi. Bu remoteusername @ remotesystem olarak değiştirilmeli, değil mi? Hem yerel hem de uzaktan mı?
user394

5
Hayır Sadece yerel içeriğini eklemek id_rsa.pubiçin authorized_keysuzak sistemde. Çalışacak.
Warren Young

1
dönüşümlü olarak, birçok sistem bu sorunu çözmek için ssh-copy-id'e sahiptir: "ssh-copy-id -i ~ / .ssh / id_rsa.pub kullanıcı adı @ remote-machine"
Matt Simmons

Ne yazık ki, pek çok kişi bunu yapmıyor ve bu OpenSSH'nin standart bir parçası değil gibi görünüyor, bu yüzden bu komut dosyasının etrafında yüzen en az birkaç farklı uygulama var.
Warren Young

Eğer gnome denizatı kullanıyorsanız otomatik anahtar dağıtımı var.
Maciej Piechotka

9

Bunu yapmanın iki yolu vardır:

1) svn url'sine user @ yazın; bu svn + ssh'ye o kullanıcı olarak oturum açmasını söyler. Bence bakım açısından kötü bir fikir, çünkü deponun diğer kısımlarına işaret eden harici gibi şeyler düzgün çalışmaz.

2) aşağıdakilere benzer bir ~ / .ssh / config ( ssh_config olarak belgelenmiştir ) yapın:

Host othersystem
  User otheruser

Bu şekilde herhangi othersystem için ssh girişimi otheruser kullanarak varsayılan olacaktır. Hangi ssh manuel olarak ve svn kullanırken sizin için kullanışlı.


5

Her iki makinede de aynı kullanıcı adına sahip olmanız gerekmez. ( ssh-keygen) Anahtarını oluşturduğunuz sürece , yerel sunucudan ~/.ssh/id_rsa.pubveya ~/.ssh/id_dsa.pub(anahtar türüne bağlı olarak) yerel sunucudan satır kopyalamanız ve ~/.ssh/authorized_keysuzaktan kumandaya eklemeniz gerekir .

% ssh-keygen
% cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

remoteuserHer zaman eklemek için yazmak istemiyorsanız ~/.ssh/config:

Host remoteserver
    User remoteuser

PS. Adı anahtarının formunda olabilir localuser@localhostama o sadece bir isim . O kadar iyi olabilir myfavouritekey@myfavouritecomputerve kimse umursamaz.


Yukarıdaki "cat" komutu, yukarıda ssh-copy-idbahsedilen yaygın fakat standart olmayan komut dosyasının çekirdeğidir . Bunu biliyorum, çünkü kullandığım tüm sistemler gelmiyor ssh-copy-id, bu yüzden birkaç kez daha böyle bir şey yazdım. :)
Warren Young

Hiç duymadım ssh-copy-id. Genellikle kullanıyorum vimveya seahorse;)
Maciej Piechotka

0

Sonra .ssh / config oluşturmak ve çalıştırmak:

cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Hata alıyorum:

Bad owner or permissions on /usr/share/eprints3/.ssh/config

sonra eklerim chmod 600 .ssh/configve bundan sonra düzgün çalışır.

enter code here

1
Authority_keys dosyasına eklerseniz daha iyi olur, aksi takdirde başkalarının pub anahtarlarını da kaldıracaktır. Cevabınızı 'cat >> .ssh / authority_keys' ile düzenlerseniz daha iyi
Nitin Mahesh
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.