Jawaban:
ssh-copy-id adalah skrip yang cukup sederhana yang seharusnya mudah direplikasi di bawah windows.
Jika Anda mengabaikan semua penanganan parameter, penanganan kesalahan, dan sebagainya, ini adalah dua perintah dari ssh-copy-id yang benar-benar melakukan pekerjaan sebagian besar waktu.
GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
Menggunakan alat dempul, perintah seperti ini harus sama (tidak diuji).
type public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
Jika Anda ingin melakukan semua penanganan kesalahan yang sama, dan lokasi kunci otomatis, saya yakin menulis skrip di Windows akan jauh lebih rumit, tetapi tentu saja mungkin.
plink.exe -pw password
bekerja. Juga jika Anda tahu ada .ssh / berwenang_keys ada perintahnyatype id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys"
.ssh/
direktori ada. The >>
redirection kemudian akan membuat file jika tidak ada.
Jawaban ini tidak membantu saya. Saya benar-benar tidak memerlukan skrip gila. Saya telah membuat kunci publik di mesin klien saya di git bash dan mencoba untuk menyalinnya ke VPS.
Setelah membuat kunci publik Anda, kunci tersebut harus disimpan sebagai "(folder apa pun yang Anda mulai) /. Ssh / id_rsa.pub"
Jadi gunakan perintah ini: di
cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "cat >> ~/.ssh/authorized_keys"
mana user
nama pengguna Anda (kadang-kadang "root", atau apa pun yang telah Anda siapkan), dan ganti 123.45.67.89
dengan alamat IP mesin / host / VPS Anda.
Jika direktori .ssh
belum dibuat di mesin host, gunakan variasi kecil ini:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
ssh-copy-id melakukan beberapa hal (baca halaman manual untuk detailnya), tetapi hal terpenting yang dilakukannya adalah menambahkan konten file kunci publik lokal Anda ke file jarak jauh yang disebut otorisasi_keys.
Anda bisa melakukannya sendiri dengan membuka file kunci dengan editor teks dan menempelkan konten di terminal Kitty.
echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys
Atau, Anda dapat mengunggah file menggunakan WinSCP (yang menggunakan sftp, atau scp sebagai cadangan) dan melakukan sesuatu yang mirip dengan saran saya sebelumnya, tanpa menyalin / menempel dengan jelek.
cat id_rsa.pub >> .ssh/authorized_keys
di mana id_rsa.pub adalah nama file dari kunci publik yang Anda unggah.
Terinspirasi oleh jawaban zoredache, saya telah membuat banyak skrip yang merupakan versi windows. Namun mereka semua bergantung pada plink. Silakan lihat di sini
https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/
Saya juga memiliki skrip wincp yang dapat digunakan sesuai jawaban lain. :) Kutipan dari readme:
Metode yang dicoba sejauh ini:
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]"
Di Windows 7 ada ssh.exe
Inilah yang bekerja untuk saya:
1. buat identitas (di windows)
c:\>ssh-keygen
Itu menciptakan file identitas di direktori home. Saya mengubah nama kunci publik menjadi "id_rsa"
2. salin file ke sistem linux target menggunakan Kredit ssh ke https://serverfault.com/users/984/zoredache untuk jawabannya
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
Catatan: Untuk beberapa alasan, perpipaan tidak berfungsi untuk saya:
# this should work but it didn't work for me
type file | ssh user@lnxhost "cat >> /tmp/t.txt"
3. Perbaiki file di linux File id_rsa.pub di windows adalah multiline di mana linux mengharapkannya dalam satu baris sehingga kita harus memperbaikinya sedikit. Login ke linux dan buka file:
vi ~/.ssh/authorized_keys
Sebagai contoh:
---- 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 ----
harus menjadi
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla335flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMCY58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVyax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdTLFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHEQkw+1wuV6dFoT1/hngSw== user@winhost
4. mengujinya
c:\>ssh user@lnxhost "ls -al /tmp/"
Ini harus mencantumkan konten / tmp tanpa meminta kata sandi.
authorized_keys
ke baris tunggal adalah yang saya butuhkan!
Jika Anda tidak memiliki ssh-copy-id
Windows, Anda dapat menjalankannya di server itu sendiri.
.pub
ekstensi..pub
file ke server.Pada jenis server:
ssh-copy-id -i mykey.pub username@localhost
Pada ssh-copy-id
skrip Windows dilengkapi dengan Git untuk Windows . Jadi Anda dapat menggunakannya secara lokal, jika Anda memiliki Git untuk Windows.
Jika Anda tidak ingin melakukan ini secara manual, Anda dapat menggunakan WinSCP 5.15. Ini dapat mengatur otentikasi kunci publik untuk Anda.
Gunakan Alat> Instal Kunci Publik ke tombol Server pada SSH> halaman Otentikasi dialog Pengaturan Situs Lanjutan WinSCP .
(Saya penulis WinSCP)
Jika Anda menggunakan cmder (atau msysgit / mingw yang memiliki scp & ssh), saya baru saja menulis skrip python sederhana untuk ini. Itu dapat ditemukan di sini: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983
Contoh penggunaan: python ssh-copy-id.py user @ remote-machine.
Kata sandi akan diminta saat menjalankan skrip.
apa yang saya lakukan, memiliki CygWin di Win10 saya, terhubung ke Linux (berdasarkan jawaban di atas):
- note: menggunakan cat, ia akan menyelesaikan jalur cygwin secara otomatis, serta perintah cygwin menggunakan struktur cygwin-linux-folder-structure
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)
Langkah-langkah berikut akan dilakukan:
LANGKAH-1: Hasilkan Pasangan Kunci RSA
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: ssh-copy-id setara di windows
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]
LANGKAH-3: Otentikasi tanpa kata sandi berfungsi!
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
Ada versi Windows dari ssh-copy-id yang saya temukan di GitHub: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist
Bahkan, itu bisa bekerja selama Anda ada ssh
di jalur Anda. Tambahkan yang berikut ini di profil PowerShell Anda:
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"
}
}
Di konsol PowerShell:
ssh-copy-id user@machine