Yanıtlar:
ssh-copy-id, pencerelerin altında çoğaltılması oldukça kolay olması gereken oldukça basit bir komut dosyasıdır.
Tüm parametre işleme, hata işleme vb. Dikkate almazsanız, bunlar aslında çoğu zaman işi yapan ssh-copy-id'den gelen iki komuttur.
GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
Macun araçlarını kullanarak buna benzer bir komut eşdeğer olmalıdır (test edilmemiş).
type public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
Aynı hata işleme ve otomatik anahtar konumunu yapmak istiyorsanız, Windows altında bir komut dosyası yazmak daha zor, ancak kesinlikle mümkün olacaktır eminim.
plink.exe -pw password
Eserleri. Ayrıca .ssh / type id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys"
.ssh/
Dizinin mevcut olması yeterlidir . >>
O yoksa yönlendirme sonra dosya oluşturur.
Bu cevaplar bana yardımcı olmadı. Gerçekten çılgın senaryolara ihtiyacım yoktu. Müşteri makinemde git bash'ta ortak bir anahtar yaratmıştım ve bir VPS'ye kopyalamaya çalışıyordum.
Genel anahtarınızı oluşturduktan sonra, anahtar "(başlattığınız klasör) /. Ssh / id_rsa.pub" olarak depolanmalıdır.
Bu yüzden bu komutu kullanın: kullanıcı adınız
cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "cat >> ~/.ssh/authorized_keys"
nerede user
(bazen "root", ya da ne ayarladıysanız) ve 123.45.67.89
makineniz / ana makineniz / VPS'nin IP adresi ile değiştirin.
Dizin .ssh
ana makinede henüz oluşturulmadıysa, bu küçük varyasyonu kullanın:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
ssh-copy-id birkaç şey yapar ( detaylar için man sayfasını okuyun ), fakat en önemlisi yerel ortak anahtar dosyanızın içeriğini yetkili_keyler adı verilen uzak bir dosyaya eklemektir.
Bunu, anahtar dosyasını bir metin editörüyle açıp içeriğini Kitty terminaline yapıştırarak yapabilirsiniz.
echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys
Alternatif olarak, dosyayı WinSCP kullanarak yükleyebilir (sftp veya geri dönüş olarak scp kullanır) ve önceki önerime benzer bir şey yapabilir, çirkin kopya / yapıştırmadan kullanabilirsiniz.
cat id_rsa.pub >> .ssh/authorized_keys
id_rsa.pub, yüklediğiniz ortak anahtarın dosya adıdır.
Zoredache'ın cevabından ilham alan Windows sürümü olan bir sürü senaryo oluşturdum. Ancak hepsi pırıltıya bağlı. Lütfen buraya bir göz atın
https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/
Ayrıca başka bir cevaba göre kullanılabilecek bir winscp betiğim de var. :) Benioku bölümünden alıntı:
Şimdiye kadar uygulanan yöntemler:
usage: .\Scriptname test@example.com password [identity file]
usage: .\Scriptname /i:idtest.pub user@example.com /p:password
usage: .\Scriptname -i idtest.pub user@example.com password
# "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]"
Windows 7'de bir ssh.exe var
İşte benim için çalıştı ne:
1. kimlik oluşturma (pencerelerde)
c:\>ssh-keygen
Bu ana dizinde bir kimlik dosyası oluşturdu. Genel anahtarın adını "id_rsa" olarak değiştirdim
2. ssh kullanarak hedef linux sisteme dosyayı kopyalamak için Kredi https://serverfault.com/users/984/zoredache onun cevabını
c:\>ssh user@lnxhost "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1" < \\path_to_where_the_file_was_generated_from_ssh_key_gen\id_rsa.pub
Not: Bazı sebeplerden dolayı, borular benim için işe yaramadı:
# this should work but it didn't work for me
type file | ssh user@lnxhost "cat >> /tmp/t.txt"
3. Linux'taki dosyayı düzeltin windows'daki id_rsa.pub dosyası, linux'un tek bir satırda beklediği çok satırlıdır, bu yüzden onu biraz düzeltmeliyiz. Linux'a giriş yapın ve dosyayı açın:
vi ~/.ssh/authorized_keys
Örneğin:
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, user@winhost"
AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla33
5flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMC
Y58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVy
ax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdT
LFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHE
Qkw+1wuV6dFoT1/hngSw==
---- END SSH2 PUBLIC KEY ----
olmalı
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla335flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMCY58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVyax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdTLFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHEQkw+1wuV6dFoT1/hngSw== user@winhost
4. test edin
c:\>ssh user@lnxhost "ls -al /tmp/"
Bu, şifre sormadan / tmp içeriğini listeler.
authorized_keys
için. Tek hatlara yeniden biçimlendirme ihtiyacım olan tek şey!
Eğer yoksa ssh-copy-id
Windows üzerinde, sunucunun kendisinde çalıştırabilirsiniz.
.pub
uzantılı bir dosyaya kaydedin ..pub
Dosyayı sunucuya yükleyin .Sunucuda şunu yazın:
ssh-copy-id -i mykey.pub username@localhost
Windows'ta ssh-copy-id
komut Windows için Git ile birlikte geliyor . Yani, eğer Windows için Git'iniz varsa, bunu yerel olarak kullanabilirsiniz.
Bunu el ile yapmak istemiyorsanız, WinSCP 5.15'i kullanabilirsiniz . Ortak anahtar kimlik doğrulamasını sizin için ayarlayabilir. WinSCP Advanced Site Settings iletişim kutusunun SSH> Kimlik Doğrulama sayfasındaki Araçlar> Genel Anahtarı Sunucuya Yükle düğmesini
kullanın .
(WinSCP'nin yazarıyım)
Eğer cmder kullanıyorsanız (veya scp & ssh olan msysgit / mingw), bunun için basit bir python betiği yazdım. Burada bulunabilir: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983
Örnek kullanım: python ssh-copy-id.py user @ remote-machine.
Komut dosyası çalıştırıldığında şifre sorulacak.
yaptığım, Win10'umda CygWin'e sahip olmak, Linux'a bağlanmak (yukarıdaki cevaplara dayanarak):
- not: cat kullanarak, cygwin-linux-folder-yapısını kullanan cygwin komutunun yanı sıra cygwin yolunu otomatik olarak çözer.
1. added c:\cygwin\bin to the environment's Path variable
2. starting cmd.exe (windows commandline)
3. > ssh-keygen -t rsa (just pressing enter till done)
4. > cat ~/.ssh/id_rsa.pub | ssh user@server "umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys"
5. ..enter server password
6. > ssh user@server (testing, not beeing asked for password)
Bu aşağıdaki adımlar olacaktır:
ADIM-1: RSA Anahtar Çifti Oluştur
C:\Users\user>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/user//.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/user//.ssh/id_rsa.
Your public key has been saved in /c/Users/user//.ssh/id_rsa.pub.
The key fingerprint is:
20:16:9b:0d:00:92:c4:34:99:51:20:b7:ef:50:c4:0f user@localhost
STE2-2: Windows'taki ssh-copy-id eşdeğeri
C:\Users\user>ssh user@remote "umask 077; test -d .ssh || mkdir .ssh ; cat >> .s
sh/authorized_keys || exit 1" < "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys
|| exit 1" < C:\Users\user\.ssh\id_rsa.pub
The authenticity of host 'remote (xx.xx.xxx.xx)' can't be established.
RSA key fingerprint is 99:99:73:74:fe:14:bc:91:c8:3b:ac:f4:95:99:4d:06.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'remote,xx.xx.xxx.xx' (RSA) to the list of known hosts.
*************************************************************************
This computer system is the property of Sample Corporation and is to
be used for business purposes. All information, messages, software and
hardware created, stored, accessed, received, or used by you through
this system is considered to be the sole property of Sample Corporation
and can and may be monitored, reviewed, and retained at any time. You
should have no expectation that any such information, messages or
material will be private. By accessing and using this computer, you
acknowledge and consent to such monitoring and information retrieval.
By accessing and using this computer, you also agree to comply with
all of Sample Company's policies and standards.
*************************************************************************
user@remote's password:[Enter Password for first time]
ADIM-3: Parolasız kimlik doğrulama çalışıyor!
C:\Users\user>ssh user@remote
*************************************************************************
This computer system is the property of Sample Corporation and is to
be used for business purposes. All information, messages, software and
hardware created, stored, accessed, received, or used by you through
this system is considered to be the sole property of Sample Corporation
and can and may be monitored, reviewed, and retained at any time. You
should have no expectation that any such information, messages or
material will be private. By accessing and using this computer, you
acknowledge and consent to such monitoring and information retrieval.
By accessing and using this computer, you also agree to comply with
all of Sample Company's policies and standards.
*************************************************************************
Last login: Wed Oct 14 14:37:13 2015 from localhost
GitHub'da bulduğum ssh-copy-id'nin Windows sürümü var: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist
Aslında, ssh
yolunda olduğunuz sürece çalışabilir . PowerShell profilinize aşağıdakini ekleyin:
function ssh-copy-id([string]$userAtMachine){
$publicKey = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
if (!(Test-Path "$publicKey")){
Write-Error "ERROR: failed to open ID file '$publicKey': No such file"
}
else {
& cat "$publicKey" | ssh $userAtMachine "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"
}
}
Bir powershell konsolunda:
ssh-copy-id user@machine