回答:
ssh-copy-idは非常に単純なスクリプトで、Windowsで簡単に複製できます。
すべてのパラメーター処理、エラー処理などを無視すると、これらはssh-copy-idからの2つのコマンドであり、実際にほとんどの作業を実行しています。
GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
パテツールを使用すると、このようなコマンドは同等になります(テストされていません)。
type public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
すべて同じエラー処理と自動キー配置を行いたい場合は、Windowsでスクリプトを記述するのは非常に難しくなりますが、確かに可能です。
plink.exe -pw password
動作します。あなたがの.ssh / authorized_keysにを知っている場合もコマンドは単純であるが存在するtype id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys"
.ssh/
ディレクトリが存在すれば十分です。>>
それが存在しない場合、リダイレクトは、ファイルを作成します。
これらの答えは私を助けませんでした。クレイジーなスクリプトは本当に必要ありませんでした。クライアントマシンでgit bashで公開キーを作成し、それをVPSにコピーしようとしていました。
公開キーを作成した後、キーは「(開始したフォルダ)/。ssh / id_rsa.pub」として保存する必要があります
したがって、このコマンドを使用します。
cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "cat >> ~/.ssh/authorized_keys"
どこuser
ユーザー名は、(時々 「根」、または何でもあなたが設定している場合があります)で、交換してください123.45.67.89
あなたのマシン/ホスト/ VPSのIPアドレスを持ちます。
.ssh
ホストマシンにディレクトリがまだ作成されていない場合は、次の小さなバリエーションを使用します。
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
ssh-copy-idはいくつかのことを行います(詳細についてはmanページを読んでください)が、最も重要なことは、authorized_keysと呼ばれるリモートファイルにローカル公開鍵ファイルの内容を追加することです。
テキストエディタでキーファイルを開き、Kittyターミナルに内容を貼り付けることで、これを自分で行うことができます。
echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys
または、WinSCP(sftp、またはscpをフォールバックとして使用)を使用してファイルをアップロードし、copyいコピー/貼り付けをせずに、以前の提案と同様の操作を行うことができます。
cat id_rsa.pub >> .ssh/authorized_keys
id_rsa.pubは、アップロードした公開キーのファイル名です。
zoredacheの答えに触発されて、Windowsバージョンのスクリプトをたくさん作成しました。ただし、それらはすべてplinkに依存しています。こちらをご覧ください
https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/
また、別の回答に従って使用できるwinscpスクリプトもあります。:) readmeからの抜粋:
これまでに試みられた方法:
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にはssh.exeがあります
ここに私のために働いたものがあります:
1. IDを作成します(Windows上)
c:\>ssh-keygen
これにより、ホームディレクトリにIDファイルが作成されました。公開鍵の名前を「id_rsa」に変更しました
2.答えとしてhttps://serverfault.com/users/984/zoredache のssh クレジットを使用して、ターゲットLinuxシステムにファイルをコピーします
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
注:何らかの理由でパイピングが機能しませんでした:
# this should work but it didn't work for me
type file | ssh user@lnxhost "cat >> /tmp/t.txt"
3. Linux上のファイルを修正します 。Windows 上のid_rsa.pubファイルは複数行で、Linuxでは1行で入力されるため、少し修正する必要があります。Linuxにログインしてファイルを開きます。
vi ~/.ssh/authorized_keys
例えば:
---- 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 ----
になるはずです
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla335flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMCY58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVyax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdTLFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHEQkw+1wuV6dFoT1/hngSw== user@winhost
4.テストする
c:\>ssh user@lnxhost "ls -al /tmp/"
これにより、パスワードを要求せずに/ tmpの内容がリストされます。
authorized_keys
単一行に再フォーマットするだけで十分です。
ssh-copy-id
Windows上にない場合は、サーバー自体で実行できます。
.pub
拡張子を付けてファイルに内容を保存します。.pub
ファイルをサーバーにアップロードします。サーバーで次を入力します。
ssh-copy-id -i mykey.pub username@localhost
Windowsのssh-copy-id
スクリプトには、Git for Windowsが付属しています。Git for Windowsを使用している場合は、ローカルで使用できます。
これを手動で行いたくない場合は、WinSCP 5.15 を使用できます。公開鍵認証を設定できます。WinSCPの[サイトの詳細設定]ダイアログの[SSH]> [認証]ページの[ ツール]> [サーバーへの公開キーのインストール]ボタンを
使用します。
(私はWinSCPの著者です)
cmder(またはscpとsshを含むmsysgit / mingw)を使用している場合、このための簡単なpythonスクリプトを作成しました。ここにあります:https : //gist.github.com/ceilfors/fb6908dc8ac96e8fc983
使用例:python ssh-copy-id.py user @ remote-machine。
スクリプトの実行時にパスワードが求められます。
私がやったこと、私のWin10にCygWinを持ち、Linuxに接続する(上記の回答に基づいて):
-注:catを使用すると、cygwinパスとcygwin-linux-folder-structureを使用するcygwinコマンドが自動的に解決されます
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)
次の手順を実行します。
手順1: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:Windowsで同等のssh-copy-id
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]
ステップ-3:パスワードレス認証が機能します!
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で見つけたWindowsバージョンのssh-copy-idがあります:https : //github.com/zhengyi-yang/ssh-copy-id/tree/master/dist
実際、それはあなたがssh
あなたの道にいる限り機能します。PowerShellプロファイルに次を追加します。
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"
}
}
PowerShellコンソールで:
ssh-copy-id user@machine